ネットワークマシンで実行されているクライアント用にWCFサービスをどのように構成しますか?
-
03-07-2019 - |
質問
私はWCFサービス/クライアントを作成しましたが、同じマシンで実行する場合はすべて正常に動作します。しかし、異なるマシンで実行するように設定する方法を理解することはできません。知っていますか?
現在、URIは http:// localHost:8000 ......に設定されています
しかし、net.tcp:// MyServer:8000… ..のようなものが欲しいと思います。
どんなアイデアも素晴らしいでしょう。 ありがとう。
解決
見たところ、同じ実行可能ファイルにサービスとクライアントの両方があります。これを行うことはできますが、それらを別のマシンで使用する場合は、サービスの実行可能ファイル/ホスト(自己ホスト型またはIISのいずれか)とクライアントの実行可能ファイルが必要です。それぞれのアドレス、バインディング、およびコントラクトを適切な構成セクションで適切に構成する必要があります。サーバーには次のようなものがあります:
<configuration>
<system.serviceModel>
<services>
<service name="YourService">
<endpoint address="http://MyServer:8000/..."
binding="BasicHttpBinding"
contract="Your.IContract" />
</service>
</services>
</system.serviceModel>
</configuration>
そして、クライアント上では次のようになります:
<configuration>
<system.serviceModel>
<client>
<endpoint address="http://MyServer:8000/..."
binding="BasicHttpBinding"
contract="Your.IContract"
name="ClientEndpoint" />
</client>
</system.serviceModel>
</configuration>
主なことは、クライアントとサーバーが指定されたポートとプロトコルを介して互いに通信できることを確認することです(主にファイアウォールが通信をブロックしていないことを確認します)。もう1つ注意すべきことは、バインディングプロトコルを変更すると、サービスの他の側面に影響を与える可能性があることです(セキュリティは大きなものですが、サービスでできることとできないこともあります)。
他のヒント
質問に答えるのに十分な情報がここにありません。
コードを介してServiceHostおよびプロキシにアドレス/バインディング/契約情報を設定していない場合、設定ファイルのセクションを投稿する必要があります。
コードで実行している場合は、使用しているコードを表示する必要があります。
私が知ることができることから、トランスポートバインディングに不一致があるかもしれません。サービスとクライアントは同じトランスポート(http、tcp、名前付きパイプなど)上になければなりません。