Использование клиентского SOAP-клиента службы С# с различными URI конечных точек

У меня есть SOAP Webservice, доступный на нескольких серверах, имея несколько конечных точек. Я хочу, чтобы не добавлять несколько ссылок на службы (С# SOAP Port Clients) с разными именами, просто чтобы поговорить с этими службами, поскольку API точно такой же.

Есть ли способ настроить URI конечной точки во время выполнения?

Ответы

Ответ 1

Я использую следующее, которое отлично работает:

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

Ответ 2

Мне тоже не удалось найти это. Я, наконец, просто заимствовал привязку конфигурации и сделал это:

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);
}