Friday, May 14, 2010

Silverlight cross-domain trouble

The last days I’m spending some time learning Silverlight. And as a newbie, I’m making all the beginner mistakes (and learning a lot from it).

One of the obvious things you need to do if your Silverlight application is calling out to external webservices is to enable cross-domain calls.

Most of the time you get an error message like this:

“An error occurred while trying to make a request to URI ‘http://localhost:1378/MyFirstSilverlightService.svc’. This could be due to attempting to access a service in a cross-domain way without a proper cross-domain policy in place, or a policy that is unsuitable for SOAP services. You may need to contact the owner of the service to publish a ……...”

To solve this you have to add a clientaccesspolicy.xml file in the root folder where your services are hosted. Insert the following lines:

   1:  <?xml version="1.0" encoding="utf-8"?>
   2:  <access-policy>
   3:    <cross-domain-access>
   4:  <policy>
   5:        <allow-from http-request-headers="*">
   6:          <domain uri="*"/>
   7:        </allow-from>
   8:        <grant-to>
   9:          <resource path="/" include-subpaths="true"/>
  10:        </grant-to>
  11:      </policy>
  12:    </cross-domain-access>
  13:  </access-policy>

No comments: