URL-адрес WSDL для службы WCF (basicHttpBinding), размещенной в службе Windows

StackOverflow https://stackoverflow.com/questions/167852

Вопрос

Я размещаю службу WCF в службе Windows на одном из наших серверов. После того, как он заработал в basicHttpBinding и создал тестовый клиент в .NET (который наконец-то заработал), я пошел и попытался получить к нему доступ из PHP с помощью класса SoapClient. Конечным потребителем будет сайт PHP, поэтому мне нужно сделать его пригодным для использования на PHP.

Я был озадачен, когда мне пришлось вводить URL WSDL в конструкторе класса SoapClient в коде PHP. Где находится WSDL? Все, что у меня есть, это:

http://172.27.7.123:8000/WordService и http://172.27.7.123:8000/WordService/mex

Ни один из них не раскрывает WSDL.

Будучи новичком в WCF, я, возможно, спросил глупую вещь (или у меня могло быть неправильное предположение где-то). Пожалуйста, будьте нежны: D

И нет, http://172.27.7.123:8000/WordService?wsdl этого не делает показать что-то отличное от http://172.27.7.123:8000/WordService : (

Я вынужден разместить его в IIS? Я вынужден использовать обычный веб-сервис?

Это было полезно?

Решение

Это может помочь:

http://msdn.microsoft.com/en-us/library /ms734765.aspx

Короче говоря, вам нужно настроить конечные точки службы и ее поведение. Вот минимальный пример:

<system.serviceModel>
  <services>

    <service 
      <!-- Namespace.ServiceClass implementation -->
      name="WcfService1.Service1" 

      <!-- User behaviour defined below -->
      behaviorConfiguration="SimpleServiceBehaviour"> 

      <endpoint 
        address="" 
        binding="basicHttpBinding"
        <!-- Namespace.Interface that defines our service contract -->
        contract="WcfService1.IService1"/>

    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="SimpleServiceBehaviour">

        <serviceMetadata 
          <!-- We allow HTTP GET -->
          httpGetEnabled="true" 

          <!-- Conform to WS-Policy 1.5 when generating metadata -->
          policyVersion="Policy15"/>

      </behavior>
    </serviceBehaviors>
  </behaviors>
</system.serviceModel>

Не забудьте удалить комментарии XML, поскольку они недействительны там, где они есть.

Другие советы

Пожалуйста, смотрите эту ссылку:

Предоставление службы WCF с несколькими привязками и конечными точками

Unlike previous ASMX services, the WSDL (web service definition language) for WCF 
services is not automatically generated.  The previous image even tells us that 
"Metadata publishing for this service is currently disabled.".  
This is because we haven't configured our service to expose any meta data about it. 
 To expose a WSDL for a service we need to configure our service to provide meta information.  Note:  
The mexHttpBinding is also used to share meta information about a service.  While 
the name isn't very "gump" it stands for Meta Data Exchange.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top