Изменение веб-службы WCF wsdl name и targetNamespace

Все,

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

Вы создали службу.

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

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

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

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

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

Ответы

Ответ 1

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

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

Добавьте это в свою реализацию службы

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

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

<endpoint binding="basicHttpBinding" bindingNamespace="http://myservice.com"....

Ответ 2

Собственно, он должен быть установлен на ServiceBehavior:

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

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