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

Я размещаю службу 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? Я вынужден использовать обычный WebService?

Ответ 1

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

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, поскольку они недействительны там, где они есть.

Ответ 2

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

Предоставление службы 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.