SOAP複数のサーバーで使用できるWebサービスがあるため、複数のエンドポイントがあります。複数のサービス参照(C#SOAPポートクライアント)を追加しないようにしたいAPIはまったく同じであるため、このサービスと通信するためだけに異なる名前を付けます。
実行時にエンドポイントURIを構成する方法はありますか?
私はうまくいく次のものを使います:
ServiceReference1.wsSoapClient ws= new ServiceReference1.wsSoapClient();
ws.Endpoint.Address = new System.ServiceModel.EndpointAddress("http://xxx/myservice.asmx");
私もこれを見つけるのに苦労しました。最後に構成バインディングを借りてこれを行いました:
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);
}