Использование по умолчанию разных URL-адресов при создании прокси-сервера веб-службы с WSDL.exe

StackOverflow https://stackoverflow.com/questions/143019

  •  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).

Хочу выразить благодарность Рику Кирнеру за то, что он указал мне правильное направление.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top