Изменение веб-службы 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 будет изменено.