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?


person Andrei Rînea    schedule 03.10.2008    source источник
comment
Хороший. Благодаря поиску нашел свой вопрос и ответы   -  person    schedule 25.11.2010


Ответы (2)


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

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

person Kev    schedule 03.10.2008
comment
Извините, но ссылка не работает - person Andrei Rînea; 04.10.2008
comment
@Andrei: ссылка кажется прекрасной, MSDN мог быть на одном из обновлений на выходных или что-то в этом роде. - person Kev; 04.10.2008
comment
Хороший. Благодаря функции поиска. нашел ваш ответ - person ; 25.11.2010
comment
@AndreiRinea или Кев Каким будет URL-адрес WSDL? - person Louis Rhys; 23.08.2012

См. Эту ссылку:

Предоставление службы 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.
person DaveK    schedule 03.10.2008
comment
Спасибо вам тоже :) - в указанном вами документе также указано, что для httpGetEnabled установлено значение true. - person Andrei Rînea; 05.10.2008