Генерация прокси веб-службы из WSDL C # - PullRequest
5 голосов
/ 06 июля 2011

Я работаю с веб-сервисом Fedex.Они не предоставили URL-адрес веб-службы, такой как http://hostServer/WebserviceRoot/WebServiceName.asmx. Скорее, они предоставили файл .wsdl.

Пожалуйста, помогите мне сгенерировать прокси-классы веб-службы из файла .wsdl и добавить ссылку на веб-службу в мой проект.

Я знаю, что для создания прокси из wsdl, как

wsdl /l:cs /protocol:SOAP /o:MyProxy.cs mywsdl.wsdl

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

Ответы [ 3 ]

11 голосов
/ 06 июля 2011

Если вы создаете прокси-классы вручную, вам нужно только добавить их в свой проект. Механизм Add Web Reference в Visual Studio используется для автоматизации этого процесса и добавления типов в.

Исполняемый файл wsdl прочитает загруженный вами файл WSDL («mywsdl.wsdl») и сгенерирует прокси-код в вашем примере на языке C # (в «MyProxy.cs»). Вы можете добавить «MyProxy.cs» в ваш проект и начать создавать экземпляры сгенерированного клиента в вашем проекте.

5 голосов
/ 06 июля 2011

используйте команду wsdl.exe из командной строки Visual Studio.

ex:

WSDL c:/myfile.wsdl
1 голос
/ 06 июля 2011

Обычно есть два способа работы с веб-сервисами.Один, как вы упомянули, использует URL-адрес веб-службы ../service.asmx.Таким образом, вам просто нужно использовать «Добавить веб-ссылку» в проекте Visual Studio, и вы всегда подключены к живому веб-сервису.Это намного проще, недостатком является то, что если веб-сервис решит что-то изменить, вам также нужно изменить свою ссылку.Перекомпилируйте проект и повторно разверните.

Когда вы сохраняете локальную копию файла wsdl, если они вводят обязательное поле в действующем WSDL, вы все еще защищены, пока базовая база кода все еще работает с ним.Если вы генерируете класс proxy.cs самостоятельно, как в принятом ответе, он просто работает как добавление его через visual studio, за исключением того, что вам нужно вручную добавить класс в проект.

Кроме того, яПолагаю, что вы можете получить полный URL-адрес веб-службы из <soap:address location="http://testsite.com/test.asmx" /> в файле WSDL.Обычно не рекомендуется использовать локальный файл WSDL, если вы намерены не отставать от любых изменений.Я сомневаюсь, что у вас возникнет эта проблема, так как это веб-служба fedex, вероятно, выдержала испытание временем.

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