Использование по умолчанию разных URL-адресов при создании прокси-сервера веб-службы с WSDL.exe
-
02-07-2019 - |
Вопрос
В моем проекте есть множество веб-сервисов, которые совместно используют типы.
Для простоты я продемонстрирую это с помощью двух веб-сервисов.
Веб-сервис1 по адресу http://MyServer/WebService.asmx Веб-сервис2 в http://MyServer/WebService.asmx
Когда я создаю прокси-сервер для этих двух сервисов, я использую:
wsdl /общие типы http://MyServer/WebService1.asmx http://MyServer/WebService2.asmx /appsettingurlkey:webServiceURL /пространство имен:MyNamespace /выход:MyProxy.cs
Проблема в том, что appsettingurlkey одинаков для каждой веб-службы в файле прокси.Я хочу иметь возможность указывать несколько параметров appsettingurlkey.Как это достигается?Я полагаю, поскольку параметр /sharetypes стал доступен, должно быть решение для указания appsettingurlkey конкретно для каждой идентифицированной веб-службы.
Если это невозможно с помощью wsdl.exe, что бы вы предложили мне сделать?Я бы предпочел не обновлять сгенерированный код, который выводит wsdl.exe, и я не хочу просматривать все мое приложение, передавая URL-адрес каждому экземпляру веб-служб.
Решение
Созданные прокси-классы являются частичными классами, поэтому моим решением было бы добавить ваш собственный конструктор в другой (не сгенерированный) файл кода, который явно считывает разные настройки для каждого прокси.
Другие советы
В дополнение к собственному ответу Элайджи, вот ответ по электронной почте, который я ему дал.
Мне пришлось опубликовать это в блоге, потому что XML-файл плохо вставлялся в это текстовое поле: http://www.rickdoes.net/blog/archive/2008/09/29/wsdl-shared-types-and-configuration.aspx
Аааа, вместо создания другого частичного класса с перегруженным конструктором, передающим URL-адрес, следующие дополнительные параметры для wsdl.exe решат мою проблему...
wsdl /общие типы http://MyServer/WebService1.asmx http://MyServer/WebService2.asmx /appsettingurlkey:webServiceURL /пространство имен:MyNamespace /выход: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).
Хочу выразить благодарность Рику Кирнеру за то, что он указал мне правильное направление.