web-dev-qa-db-ja.com

C#サービス参照の使用SOAP異なるエンドポイントURIを持つクライアント

SOAP複数のサーバーで使用できるWebサービスがあるため、複数のエンドポイントがあります。複数のサービス参照(C#SOAPポートクライアント)を追加しないようにしたいAPIはまったく同じであるため、このサービスと通信するためだけに異なる名前を付けます。

実行時にエンドポイントURIを構成する方法はありますか?

17
beberlei

私はうまくいく次のものを使います:

        ServiceReference1.wsSoapClient ws= new ServiceReference1.wsSoapClient();
        ws.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://xxx/myservice.asmx");
24
Jimbo

私もこれを見つけるのに苦労しました。最後に構成バインディングを借りてこれを行いました:

private static wsXXXX.IwsXXXXClient wsXXXXClientByServer(string sServer)
{
    // strangely, these two are equivalent
    WSHttpBinding binding = new WSHttpBinding("WSHttpBinding_IwsXXXX");
    // WSHttpBinding binding = new WSHttpBinding(SecurityMode.Message, false);

    EndpointAddress remoteAddress = new EndpointAddress(new Uri(string.Format("http://{0}:8732/wsXXXX/", sServer)), new UpnEndpointIdentity("[email protected]"));

    return new wsXXXX.IwsXXXXClient(binding, remoteAddress);
}
5
BillJam