Веб-служба WCF меняет имя wsdl и targetNamespace - PullRequest
15 голосов
/ 01 апреля 2010

All

Я немного новичок в WCF через IIS, но раньше уже делал некоторые веб-сервисы ASMX. Моя служба WCF запущена и работает, но страница помощника, сгенерированная для меня веб-службой, имеет имена по умолчанию, то есть страницу, которая говорит:

Вы создали сервис.

Чтобы протестировать этот сервис, вам нужно будет создать клиента и использовать его для вызова сервиса. Это можно сделать с помощью инструмента svcutil.exe из командной строки со следующим синтаксисом:

svcutil.exe http://localhost:53456/ServicesHost.svc?wsdl

На стандартном сайте ASMX я использовал бы атрибуты метода / класса, чтобы дать веб-службе имя и пространство имен. Когда я нажимаю на ссылку, WSDL имеет:

<wsdl:definitions name="SearchServices" targetNamespace="http://tempuri.org/" 

т.е. не имя контракта службы WCF и пространство имен из моего интерфейса. Я предполагаю, что MEX использует какие-то настройки по умолчанию, но я хотел бы изменить их на правильные имена. Как я могу это сделать?

Ответы [ 3 ]

37 голосов
/ 01 апреля 2010

Добавьте это к вашему контракту на обслуживание

[ServiceContract(Namespace = "http://some.com/service/", Name = "ServiceName")]

Добавьте это к вашей реализации сервиса

[ServiceBehavior(Namespace = "http://some.com/service/")]

Добавьте это в свой web.config

<endpoint binding="basicHttpBinding" bindingNamespace="http://myservice.com"....
5 голосов
/ 10 октября 2011

На самом деле, он должен быть поставлен на ServiceBehavior:

[ServiceBehavior(Namespace = "http://some.com/service/", Name = "ServiceName"]

Тогда имя WSDL будет изменено.

0 голосов
/ 26 ноября 2018

Помимо @neolei, я использовал это для настройки имени службы по умолчанию и имени порта веб-службы, чтобы адаптировать ее к существующей интеграции.

[ServiceBehavior(Name = "MyServiceName")]
public class MyServiceClass : IServiceContract
{
   //other code
}

Результирующий WSDL:

<wsdl:service name="MyServiceName">
  <wsdl:port name="MyServiceClass" binding="tns:MyServiceClass">
    <soap:address location="http://localhost:52233/MyService.svc"/>
  </wsdl:port>
</wsdl:service>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...