1

同じインターフェイスの2つのnet-tcpエンドポイントをプログラムで作成するサービスがありますが、スコープは異なります(内部で異なることを行います)。通常、サービスが想定どおりに実行されている場合、クライアント サービスがこれらの 2 つのポイントをそれぞれのスコープに基づいて適切に検出することは問題ありません。ただし、検出はサブネット間では機能しないため、テストするときは通常、手動構成を app.config に追加して、検出が失敗した場合でもアプリがエンドポイントを正常に登録できるようにします (これは失敗します)。app.config を構成して、新しいエンドポイントで機能するようにするにはどうすればよいでしょうか?

<?xml  version="1.0"?>
<configuration>
    <system.serviceModel>
        <client>
            <endpoint
                address="net.tcp://myserver:2170/"
                binding="netTcpBinding"
                contract="IMyServiceInterface"
                name="Service1"/>
            <endpoint
                address="net.tcp://myserver:2173/"
                binding="netTcpBinding"
                contract="IMyServiceInterface"
                name="Service2"/>
        </client>
    </system.serviceModel>
</configuration>
4

2 に答える 2

0

正確に何が問題なのかわかりません。動作はサーバーで定義する必要があるため、クライアント側のインターフェイスを調べる理由がわかりません。私の理解によると、クライアントクラスを一度生成するだけで(VSによって自動的に行われます)、そのようなコンストラクターを使用するだけです:

var remoteAddr = "net.tcp://myserver:2173/";
var client = new MyClient("*",remoteAddr);

app.config には、既定のサーバーを指す構成が 1 つだけあります。

于 2013-01-31T02:27:40.557 に答える
0

このコンストラクターで動的にサービス クライアントを作成しようとするとどうなりますか?

public ServiceClient(System.ServiceModel.Channels.Binding binding, System.ServiceModel.EndpointAddress remoteAddress) 

さまざまな設定を手動でプッシュします。

于 2013-01-24T16:43:54.300 に答える