2008-10-03 4 views
12

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

Я получил тупик, когда мне нужно было ввести 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

+0

Ницца. Спасибо за поиск, нашел ваши вопросы и ответы –

ответ

9

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

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

Извините, но ссылка, кажется, сломана –

+0

@Andrei: ссылка кажется прекрасной, MSDN, возможно, была на одном из своих обновлений в выходные или что-то в этом роде. – Kev

+0

Спасибо, теперь это работает :) –

1

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

Exposing a WCF Service With Multiple Bindings and Endpoints

 
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. 
+0

Спасибо тоже :) - документ, который вы указали, также показывает, что параметр httpGetEnabled установлен в true. –