URL-адрес WSDL для службы WCF (basicHttpBinding), размещенной в службе Windows
-
03-07-2019 - |
Вопрос
Я размещаю службу 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? Я вынужден использовать обычный веб-сервис?
Решение
Это может помочь:
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 с несколькими привязками и конечными точками
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.