URL-адрес WSDL для службы WCF (basicHttpBinding), размещенной в службе Windows - PullRequest
12 голосов
/ 03 октября 2008

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

Ответы [ 2 ]

9 голосов
/ 03 октября 2008

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

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

1 голос
/ 03 октября 2008

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

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