По умолчанию используются разные URL-адреса при создании прокси-сервера веб-службы с помощью WSDL.exe - PullRequest
0 голосов
/ 27 сентября 2008

В моем проекте есть множество веб-сервисов, которые делятся типами.

Для простоты я продемонстрирую два веб-сервиса.

WebService1 на http://MyServer/WebService.asmx webService2 на http://MyServer/WebService.asmx

Когда я генерирую прокси для этих двух служб, я использую:

WSDL / sharetypes http://MyServer/WebService1.asmx http://MyServer/WebService2.asmx / appsettingurlkey: WebServiceUrl / namespace: MyNamespace /out:MyProxy.cs

Проблема в том, что appsettingurlkey одинаков для каждого веб-сервиса в файле прокси. Я хочу иметь возможность указать несколько Параметры appsettingurlkey. Как это достигается? Я полагаю поскольку параметр / sharetypes стал доступен, должен быть решение для определения appsettingurlkey специально для каждого Веб-сервис идентифицирован.

Если это невозможно с wsdl.exe, что бы вы предложили мне сделать? Я бы предпочел не обновлять сгенерированный код, который выводит wsdl.exe, и я не хочу проходить через все приложение, передавая URL-адрес каждому экземпляру веб-служб.

Ответы [ 3 ]

4 голосов
/ 28 сентября 2008

Сгенерированные прокси-классы являются частичными классами, поэтому я решил бы добавить свой собственный конструктор в другой (не сгенерированный) кодовый файл, который явно считывает разные настройки для каждого прокси.

1 голос
/ 29 сентября 2008

Чтобы дополнить собственный ответ Илии, вот ответ по электронной почте, который я дал ему.

Я должен был вести блог, потому что XML не вставлялся в это текстовое поле: http://www.rickdoes.net/blog/archive/2008/09/29/wsdl-shared-types-and-configuration.aspx

0 голосов
/ 29 сентября 2008

А, вместо создания другого частичного класса с перегруженным конструктором, передающим URL-адрес, следующие дополнительные параметры для wsdl.exe решат мою проблему ...

wsdl / sharetypes http://MyServer/WebService1.asmx http://MyServer/WebService2.asmx / appsettingurlkey: WebServiceUrl / namespace: MyNamespace /out:MyProxy.cs / appsettingurlkey: BaseSoapUrl / appsettingbaseurl: http://MyServer/

Если в файле web.config есть набор приложений BaseSoapUrl, он будет использовать его для замены подстроки http://MyServer/ из MyProxy.cs. Если appSetting отсутствует, то он просто будет использовать путь, указанный в wsdl.exe (пример: {BaseSoapUrl} /WebService1.asmx при использовании appSetting или http://MyServer/WebService1.asmx, если не используется appSetting).

Благодарю Рика Кирнера за то, что он указал мне правильное направление.

...