WSDL для REST WCF

Я создал REST WCF в С#, указав WebGET и WebHttpBinding в web.config. Сервис отлично работает через IE. Мой wsdl запускается, как показано ниже, и имеет мыло в wsdl. Поскольку это REST, не должно мыло присутствовать в wsdl.

WSDL:

  <?xml version="1.0" encoding="utf-8" ?> 
 <wsdl:definitions name="ServiceImp" targetNamespace="http://tempuri.org/"    
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" 
    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" 
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" 
    xmlns:tns="http://tempuri.org/" 
    xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" 
    xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" 
    xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" 
    xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" 
    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" 
    xmlns:wsa10="http://www.w3.org/2005/08/addressing" 
    xmlns:wsx="http://schemas.xmlsoap.org/ws/2004/09/mex">

В приведенном выше wsdl, Так как это HTTP, почему содержимое мыла входит в службу REST?

Спасибо, Vinoth Khanna.S

Ответ 1

WCF не может описать услугу REST. Служба REST может быть описана WADL или WSDL 2.0, но WCF не поддерживает ни один из этих языков описания.

Ответ 2

Как указано выше, REST не имеет понятия WSDL в WCF, только SOAP. Если URL-адрес для ?wsdl работает, то у вас, вероятно, есть конечная точка "mex" (Metadata Exchange), определенная в вашей конфигурации, и это то, что обслуживает WSDL. Обычно это добавляется по умолчанию, если вы добавляете службу WCF с помощью мастеров VisualStudio. Если он есть, его можно удалить, если вы не планируете использовать SOAP. Обычно это выглядит примерно так:

<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />

На боковой ноте; возможно, WCF обслуживает те же сервисы, что и SOAP и REST, как описано здесь: Конечные точки REST/SOAP для службы WCF