0

WCF サービス/クライアントを作成しましたが、同じマシンで実行するとすべて正常に動作します。しかし、別のマシンで実行するように構成する方法がわかりません。どのようにするか知っていますか?

現時点ではURIはhttp://localHost:8000に設定されており……

しかし、私は net.tcp://MyServer:8000 のようなものが欲しいと思います…..

どんなアイデアでも素晴らしいでしょう。ありがとう。

4

2 に答える 2

1

一見すると、サービスとクライアントの両方が同じ実行可能ファイルに含まれています。これは可能ですが、それらを別のマシンに配置する場合は、サービス用の実行可能ファイル/ホスト (自己ホスト型または 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 つのことは、バインド プロトコルを変更すると、サービスの他の側面に影響を与える可能性があることです (セキュリティは重要ですが、サービスでできることとできないことも含まれます)。

于 2009-01-05T18:05:12.217 に答える
0

あなたの質問に答えるには十分な情報がありません。

コードを介して ServiceHost とプロキシでアドレス/バインディング/コントラクト情報を設定していないと仮定すると、構成ファイルのセクションを投稿する必要があります。

コードで実行している場合は、使用しているコードを示す必要があります。

私が知る限り、トランスポート バインディングとの不一致があるようです。サービスとクライアントは、同じトランスポート (http、tcp、名前付きパイプなど) 上にある必要があります。

于 2009-01-05T17:27:23.807 に答える