コールバックを使用するWCFサービスにwsDualHttpBindingを使用することを計画しています。クライアントは、インターネットを介してサービスと通信するWindowsフォームアプリケーションになります。明らかに、私はクライアント側のファイアウォールを制御できないので、クライアント側でClientBaseAddressを設定する適切な方法は何でしょうか。
現在、最初のテストでは、サービスとクライアントを同じPCで実行しており、バインディングを次のように設定しています。
Dim binding As System.ServiceModel.WSDualHttpBinding = Struct.Endpoint.Binding
binding.ClientBaseAddress = New Uri("http://localhost:6667")
しかし、「localhost」はマシンアドレスに変換されず(NAT変換の心配ははるかに少ない)、そのポートがクライアントファイアウォールによってブロックされる可能性があるため、インターネット経由で展開する場合はこれが機能しないと感じています。
リモートクライアントへのコールバックのベースアドレスを処理する適切な方法は何ですか?
ClientBaseAddressを指定しない場合、WCFインフラストラクチャは、サービスからの着信接続に使用されるデフォルトのクライアントベースアドレスをポート80に作成します。ポート80は通常ファイアウォールに対して開かれているため、問題なく機能するはずです。
したがって、win form wcfクライアントアプリがいつ実行されるかを教えてください。「6667」のようなカスタムポートを開くにはどうすればよいですか。また、クライアント側のルーターからPCとファイアウォールに応答するために、どのライブラリまたはどのアプローチを使用する必要があるかを教えてください。何もブロックしません。この問題について、実際のシナリオで、人々が実際の生活でこの種の状況をどのように処理するかについて話し合ってください。ありがとう