Служба REST WCF не видна в WCFTestClient - PullRequest
16 голосов
/ 20 сентября 2011

Я успешно настроил 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, Дэни.

Ответы [ 3 ]

21 голосов
/ 20 сентября 2011

Это потому, что веб-конечные точки (в отличие от 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

1 голос
/ 16 января 2012

Ниже приведен список функций, не поддерживаемых тестовым клиентом WCF:

• Типы: Stream, Message, XmlElement, XmlAttribute, XmlNode, типы, которые реализуют IXmlSerializableinterface, включая связанный атрибут XmlSchemaProviderAttribute, а также типы XDocument и XElement и тип ADO.NET DataTable.

• Дуплексный контракт.

• Транзакция.

• Безопасность: CardSpace, сертификат и имя пользователя / пароль.

• Привязки: привязка WSFederation, любые привязки к контексту и привязка Https, привязка WebHttp (поддержка сообщений ответа Json).

Источник: http://msdn.microsoft.com/en-us/library/bb552364.aspx

0 голосов
/ 20 сентября 2011

попробуйте добавить конечную точку "mexHttpBinding", которая предоставляет метаданные

...