他ドメインのWebサービスにアクセスする方法

Silverlightがホストされているサーバとは異なるWebサービスにアクセスしようとするとCommunicationExceptionが発生することがあります。

このような場合は、Webサービス側にclientaccesspolicy.xmlが設定されていないときに起きます。

clientaccesspolicy.xml

clientaccesspolicy.xmlは、そのWebサービスへのアクセス設定を行うファイルです。
clientaccesspolicy.xmlは、サーバのルートに置かれる必要があります。例えば、「http://localhost/Hello/HelloWorldService.svc」というURLのサービスには、「http://localhost/clientaccesspolicy.xml」にファイルが置きます。
下記は、全てのリクエスト許可するclientaccesspolicy.xmlの例です。

<?xml version="1.0" encoding="utf-8"?>
<access-policy>
  <cross-domain-access>
    <policy>
      <allow-from http-request-headers="*">
        <domain uri="*"/>
      </allow-from>
      <grant-to>
        <resource path="/" include-subpaths="true"/>
      </grant-to>
    </policy>
  </cross-domain-access>
</access-policy>

clientaccesspolicy.xmlでは以下のような制限をかけることができます。