Silverlight 4 プロジェクトと WCF クラス ライブラリ プロジェクトを含むソリューションがあります。そして、Silverlight プロジェクトの WCF サービスにサービス参照を追加します (WCF は IIS で公開されていません)。Silverlight プロジェクトからサービスを呼び出そうとすると、次の例外が発生します。
URI へのリクエストの試行中にエラーが発生しました
http://localhost:8732/Design_Time_Addresses/CustomWcfService/MyService/
。これは、適切なクロスドメイン ポリシーを設定せずにクロスドメイン方式でサービスにアクセスしようとしたか、SOAP サービスに適していないポリシーが原因である可能性があります。クロスドメイン ポリシー ファイルを公開し、SOAP 関連の HTTP ヘッダーを送信できるようにするために、サービスの所有者に連絡する必要がある場合があります。このエラーは、InternalsVisibleToAttribute 属性を使用せずに Web サービス プロキシで内部型を使用した場合にも発生する可能性があります。詳細については、内部例外を参照してください。
次の 2 つのファイルを WCF ライブラリ プロジェクトに追加して、この問題を解決しようとしています。
1) 次の xml を持つ clientaccesspolicy.xml
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="SOAPAction">
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
2) 次の xml を含む crossdomain.xml
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy> <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
次に、WCF プロジェクトをビルドし、Silverlight プロジェクトでサービス参照を更新しますが、同じ例外がまだ存在します。
この例外を処理するにはどうすればよいですか? サービスを公開する必要がありますか? そして、これはセルフホスティングと見なされますか??