Служба WCF REST не видна в WCFTestClient
Я успешно сконфигурировал 3 конечных точки для своего прототипа. Конечными точками являются basicHttpBinding, wsHttpBinding и webHttpBinding. Единственный глюк, который у меня есть на данный момент, - в WCFTestClient. Когда я указываю его на мою службу, он перечисляет первые два, но не webHttpBinding. Я могу проверить конечную точку REST через мой браузер, и все работает отлично. Здесь моя конфигурация:
<system.serviceModel>
<services>
<service behaviorConfiguration="serviceBehaviour" name="VMDServices.VMDService">
<endpoint binding="webHttpBinding"
address="rest" behaviorConfiguration="webBehaviour" contract="VMDServices.IService1">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint binding="basicHttpBinding"
address="basic" bindingConfiguration="basicBinding" contract="VMDServices.IService1">
</endpoint>
<endpoint binding="wsHttpBinding"
address="ws" bindingConfiguration="wsBinding" contract="VMDServices.IService1">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="basicBinding" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
<security mode="None"></security>
<readerQuotas maxStringContentLength="2147483647"/>
</binding>
</basicHttpBinding>
<wsHttpBinding>
<binding name="wsBinding" transactionFlow="true">
<security mode="None"></security>
<reliableSession enabled="true" ordered="true" />
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<endpointBehaviors>
<behavior name="webBehaviour">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="serviceBehaviour">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true">
</serviceHostingEnvironment>
</system.serviceModel>
Есть ли причина, по которой я не вижу webHttpEndpoint в средстве WCFTestClient?
Cheers,
Дэни.
Ответы
Ответ 1
Это потому, что веб-конечные точки (в отличие от SOAP) не предоставляют метаданные, поэтому тестовый клиент не знает об этом, когда он загружает WSDL для этой службы. В отличие от SOAP, у которого есть четко определенные форматы для экспонирования метаданных (WSDL, MEX), конечных точек web (a.k.a. REST) нет.
Это рассказ. Если вы хотите узнать более подробную информацию, я написал сообщение в блоге об этом на http://blogs.msdn.com/b/carlosfigueira/archive/2012/03/26/mixing-add-service-reference-and-wcf-web-http-a-k-a-rest-endpoint-does-not-work.aspx
Ответ 2
Ниже приведен список функций, не поддерживаемых тестовым клиентом WCF:
• Типы: Stream, Message, XmlElement, XmlAttribute, XmlNode, типы, реализующие
IXmlSerializableinterface, включая соответствующий атрибут XmlSchemaProviderAttribute, а также типы XDocument и XElement и тип данных ADO.NET DataTable.
• Дуплексный договор.
• Транзакция.
• Безопасность: CardSpace, сертификат и имя пользователя/пароль.
• Привязки: WSFederationbinding, любые привязки контекста и привязка Https, WebHttpbinding (поддержка сообщений ответа Json).
Источник: http://msdn.microsoft.com/en-us/library/bb552364.aspx
Ответ 3
попробуйте добавить конечную точку "mexHttpBinding", которая предоставляет метаданные