Apparently the “System.ServiceModel.ProtocolException” error is common in the fledgling world of Silverlight 2 and Web Services.
In my case I tried to reference a Web Service that my company created and was disappointed with this entertaining message:
System.ServiceModel.ProtocolException’ occurred in System.ServiceModel.dll but was not handled in user code Additional information: [UnexpectedHttpResponseCode]Arguments:Not Found
Debugging resource strings are unavailable. Often the key and arguments provide sufficient information to diagnose the problem. See http://go.microsoft.com/fwlink/?linkid=106663&Version=2.0.30226.2&File=System.ServiceModel.dll&Key=UnexpectedHttpResponseCode
What this meant in my case is that I needed a “crossdomain.xml” file placed in the root folder of the server I was accessing.
For a development server, this could mean something like this:
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<allow-access-from domain="*" />
This gives all applications (Silverlight, Flash) no matter where they’re from to access any web applicaitons on your web host.
As an ISV I find this a bit annoying, as it means updating a file that is outside of the Web Application (in the Web Root).
It would be nice to be able to configure this information within the virtual directory of the application itself.
- My Silverlight application cannot access my service!
- Crossdomain.xml Invites Cross-site Mayhem
- Article on CrossDomain.xml at Msdn