Я размещаю службу 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?
Это может помочь:
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 с несколькими связями и конечными точками
В отличие от предыдущих служб ASMX, WSDL (язык определения веб-сервисов) для WCF услуги не генерируются автоматически. Предыдущее изображение даже сообщает нам, что «Публикация метаданных для этой службы в настоящее время отключена». Это связано с тем, что мы не настроили наш сервис, чтобы показывать какие-либо метаданные об этом. Чтобы открыть WSDL для службы, нам нужно настроить наш сервис для предоставления метаинформации. Заметка: MexHttpBinding также используется для обмена метаинформацией об услуге. В то время как имя не очень «gump», это означает Meta Data Exchange.