Как сгенерировать WSDL в c #, не отправляя запрос http - PullRequest
2 голосов
/ 01 декабря 2009

Привет, Я хочу написать модульный тест, чтобы убедиться, что наши веб-сервисы не изменили WSDL с последней известной опубликованной версии. Причина этого заключается в том, что любое изменение объекта в WSDL приведет к сбою клиентов, использующих Apache Axis. Даже если все, что вы делаете, это добавляете необязательное свойство. Таким образом, если есть изменение, то разработчик должен быть предупрежден, потому что руководству продукта нужно будет сообщить клиентам об изменении, чтобы они могли быть готовы к повторной компиляции своих заглушек при публикации нового WSDL.

Так что я надеялся получить что-то вроде этого:

[Test]
public void TheWSDLHasNotChanged(){
   XmlDocument currentWSDL = SomeMysteryServiceIDontKnowAbout.GetWSDLForWebServiceClass(typeof(UserService));

   XmlDocument existingWSDL = new XmlDocument().Load("ExistingWsdl.wsdl");
   Assert.That(currentWSDL, Is.Equal.To(existingWSDL));
}

По понятным причинам я не хочу делать запрос к веб-серверу (который может работать, а может и не работать при запуске модульных тестов).

Ответы [ 2 ]

3 голосов
/ 01 декабря 2009

Чтобы сгенерировать WSDL из сборок:
Для WCF используйте SvcUtil.exe. Смотрите это MSDN HowTo .
Для ASP.NET используйте ServiceDescriptionReflector. Смотрите это руководство: http://craigandera.blogspot.se/2004/10/generating-wsdl-without-aspnet_18.html

Извините, я неправильно понял ваш фрагмент кода в моем первом ответе.

2 голосов
/ 02 марта 2010

Я создал инструмент, который может генерировать файл WSDL из скомпилированной сборки c # (dll), которая содержит одно или несколько WebServices. Обычно вам требуется работающая служба (IIS или другая), в которой находится .asmx, чтобы вы могли получить WSDL с помощью /MyWebService.asmx?wsdl

.

Этот инструмент создает файл WSDL, используя отражение для извлечения всей информации из сборки (dll).

Скачать и исходный код можно по адресу http://wsdlgenerator.codeplex.com

Любые советы и подсказки приветствуются!

- Стеф

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...