Tuesday, April 24, 2012

WCF Data Services: Add service reference fails

While preparing some training material about WCF Data Services v5.0, I had the following problem:
After creating my dataservice, I tried to add a reference to it from my client project. I right clicked on the client project and choose ‘Add service reference…’. I clicked ‘Discover’ and there was my DataService in the list of available services. But when I tried to add the reference I got the following error message:
“The document at the url http://localhost:46400/OnlineShopService.svc/ was not recognized as a known document type.
The error message from each known type may help you fix the problem:
- Report from 'XML Schema' is 'The root element of a W3C XML Schema should be <schema> and its namespace should be 'http://www.w3.org/2001/XMLSchema'.'.
- Report from 'DISCO Document' is 'Discovery document at the URL http://localhost:46400/OnlineShopService.svc/ could not be found.'.
  - The document format is not recognized.
- Report from 'WSDL Document' is 'There is an error in XML document (1, 40).'.
  - <service xmlns='http://www.w3.org/2007/app'> was not expected.
Metadata contains a reference that cannot be resolved: 'http://localhost:46400/OnlineShopService.svc'.
The remote server returned an unexpected response: (405) Method Not Allowed.
The remote server returned an error: (405) Method Not Allowed.
If the service is defined in the current solution, try building the solution and adding the service reference again.”
clip_image002
So I browsed to the DataService metadata myself  (http://localhost:46400/OnlineShopService.svc/$metadata) where I got the following error back:
clip_image002[5]
It seems that the WCF Data Service doesn’t like a namespace that starts with an underscore(‘_’). Changing the namespace to MyWebShop.AllAnySupport.Models instead of _1.AllAnySupport.Models solved the issue.
clip_image002[7]

No comments: