Как сделать так, чтобы ваш URL-адрес прокси-службы был динамическим? - PullRequest
4 голосов
/ 27 сентября 2011

У меня есть веб-ссылка на веб-сервис:

using (var client = new GetTemplateParamSoapClient("GetTemplateParamSoap"))
{
    TemplateParamsKeyValue[] responsArray = client.GetTemplatesParamsPerId(
        CtId, tempalteIds.ToArray());

    foreach (var pair in responsArray)
    {
        string value = FetchTemplateValue(pair.Key, pair.Value);
        TemplateComponentsData.Add(pair.Key, value);
    }
}

Попытка изменить URL-адрес веб-ссылки из кода C #: здесь совет:

1) http://www.codeproject.com/KB/XML/wsdldynamicurl.aspx

2) Как вызвать веб-сервис с настраиваемым URL-адресом

3) http://aspalliance.com/283_Setting_Web_Service_References_Dynamically

Но при попытке сделать символ отсутствует:

client.Url

Кроме того, я не смог найти свойство "Url_behavior"

1 Ответ

6 голосов
/ 27 сентября 2011

Похоже, вы уже добавили ссылку на службу, но вот пошаговое руководство по добавлению, обновлению и удалению ссылки на службу .

Как только у вас есть один из них в вашем проекте, вы можете изменить URI конечной точки с одной из перегрузок конструктора, как сказал Джон Сондерс выше. Для этого вам нужно знать имя конечной точки в вашем конфигурационном файле. Например, после добавления службы у вас могут быть такие элементы в вашем конфигурационном файле:

<endpoint address="http://bleh.com/services/servicename.asmx"
    binding="basicHttpBinding" bindingConfiguration="ServiceNameSoap"
    contract="ServiceReference1.ServiceNameSoap" name="ServiceNameSoap" />

Учитывая эту конечную точку, вы можете изменить address во время выполнения, используя следующую перегрузку:

var proxy = new ServiceReference1.ServiceNameSoapClient("ServiceNameSoap",
    "http://new-address.com/services/servicename.asmx");

Вы также можете сделать это после строительства, но это становится немного сложнее. Если вам нужно это сделать, см. Документацию по свойству Endpoint и связанному типу ServiceEndpoint .

.
...