SilverlightにおけるNetTcpBingingの利用 概要 †Silverlight では、明示的に NetTcpBinding を提供していませんので、Silverlight のクライアント側で NetTcpBinding と通信するため、いくつ注意することがあります。 サービスの作成 †サービス側における作成・設定では、従来の通りに設定すればよいですが、ファイアウォールでのポートに対する設定を忘れないでください。 クライアントでの呼び出す †Silverlight のクライアント側は、サービス参照による生成された「ServiceReferences.ClientConfig」ファイルの中にでは「customBinding」でサービスの設定を記述します。 クライアント側で、ソースコードによって、NetTcpBinding を利用する場合、下記のように、CustomBinding を定義する必要があります。「System.ServiceModel.NetTcp」を参照に追加する必要があります。 BinaryMessageEncodingBindingElement messageEncoding = new BinaryMessageEncodingBindingElement(); TcpTransportBindingElement tcpTransport = new TcpTransportBindingElement(); CustomBinding binding = new CustomBinding(messageEncoding, tcpTransport); Silverlight でサービスのエンドポイントを動的呼び出すための設定に、サービス提供するサーバーのDNSをlocalhostにするのはできません。誤って「localhost」で設定したら、アクセスポリシーファイルを正しく読み込めません。(これはばバグでしょう?) ポート番号 †利用できるポート番号は:4502~4534 です。 ドメイン間ポリシーファイル †NetTcpBinding で通信するため「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> <socket-resource port="4502-4534" protocol="tcp" /> </grant-to> </policy> </cross-domain-access> </access-policy> 「clientaccesspolicy.xml」の配置先の場所は、ドメイン名の直下に格納する必要があります。 たとえば、サーバー名は「MyDomain」の場合、下記のURLから clientaccesspolicy.xml をアクセスできます。ポート番号は「80」です。 http://MyDomain/clientaccesspolicy.xml マイクロソフトのサンプル †http://support.microsoft.com/kb/2425652/en あなたのお住まいの地域で最安のブロードバンド選び コメント: |