Сгенерированный интерфейс службы SOAP находится не в правильном пространстве имен

У меня относительно небольшая проблема. Я разрабатываю и взаимодействую между своим приложением и сторонней программой. Связь между ними обоими осуществляется с помощью веб-сервисов SOAP. Они предоставили мне wsdl, который они собираются использовать для получения и отправки данных. Я создал интерфейс службы и клиент с помощью инструмента wsdl.exe, и при генерации нет ошибок или предупреждений.

Проблема связана с пространством имен сгенерированного кода. Вместо того, чтобы использовать тот, который определен в интерфейсе, он использует tempuri.org. Хорошо, ничего страшного, я могу определить пространство имен в

[ServiceContract (Namespace = "theDesiredNamespace")]

Проблема в том, что я хочу предоставить доступ к моему методу веб-сервиса из

http://theDesiredNamespace/myMethod

и вместо этого мой сервис предоставляет его по адресу:

http://theDesiredNamespace/nameOfTheInterface/myMethod

где nameOfTheInterface — это имя интерфейса, автоматически сгенерированное инструментом wsdl.

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

Есть ли обходной путь для этой проблемы?


person srodriguez    schedule 03.09.2009    source источник


Ответы (1)


  1. WSDL.EXE предназначен для устаревших веб-служб ASMX, а не для WCF (это то, что вы используете, когда используете [ServiceContract]).
  2. Хотя это может выглядеть как URL-адрес, пространство имен XML не имеет ничего общего с местоположением в Интернете. Вы хотите использовать одно пространство имен, например http://www.company.com/webservices/applicationName/serviceName/. Затем вы можете получить доступ к своему сервису по любому URL-адресу, который вам нравится. Нет никакой связи между пространством имен XML и URL-адресом службы.
person John Saunders    schedule 03.09.2009
comment
Спасибо за ваш ответ, хотя я все еще кое-что упускаю. Я согласен с wsdl, если для веб-служб ASMX, а не для Wcf, но как мне тогда сгенерировать код интерфейса моего сервера? Затем я также понимаю разницу между пространством имен xml и URL-адресом, к которому я могу получить доступ, но у меня есть множество сложностей, устанавливающих этот URL-адрес так, как я хочу. Он автоматически добавляет некоторые имена интерфейсов без моего ведома. Я настроил пространство имен, используемое в URL-адресе в [ServiceContract], но все равно добавляю имя интерфейса между ним и именем моего метода. - person srodriguez; 03.09.2009