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では以下のような制限をかけることができます。