I am hosting a WCF service in a Windows Service on one of our servers. After making it work in basicHttpBinding and building a test client in .NET (which finally worked) I went along and try to access it from PHP using the SoapClient class. The final consumer will be a PHP site so I need to make it consumable in PHP.
我在我们的一台服务器上的Windows服务中托管WCF服务。在使用BasicHttpBinding并在.NET中构建测试客户端(最终工作)后,我继续尝试使用SoapClient类从PHP访问它。最终的消费者将是一个PHP站点,所以我需要在PHP中使用它。
I got stumped when I had to enter the WSDL url in the constructor of the SoapClient class in the PHP code. Where is the WSDL? All I have is :
当我必须在PHP代码中的SoapClient类的构造函数中输入WSDL url时,我感到难过。 WSDL在哪里?我只有:
http://172.27.7.123:8000/WordService and http://172.27.7.123:8000/WordService/mex
http://172.27.7.123:8000/WordService和http://172.27.7.123:8000/WordService/mex
None of these do not expose WSDL.
这些都不会暴露WSDL。
Being a newbie in WCF I might have asked a dumb thing (or I might have a wrong assumption somewhere). Please be gentle :D
作为WCF的新手,我可能会问一个愚蠢的事情(或者我可能在某处有错误的假设)。请温柔:D
And no, http://172.27.7.123:8000/WordService?wsdl does not show anything different than http://172.27.7.123:8000/WordService :(
不,http://172.27.7.123:8000 / WordService?wsdl没有显示任何不同于http://172.27.7.123:8000/WordService:(
Am I forced to host it in IIS? Am I forced to use a regular WebService?
我*在IIS中托管它吗?我*使用常规WebService吗?
2 个解决方案
#1
9
This might help:
这可能有所帮助:
http://msdn.microsoft.com/en-us/library/ms734765.aspx
In a nutshell you need to configure your service endpoints and behaviour. Here is a minimal example:
简而言之,您需要配置服务端点和行为。这是一个最小的例子:
<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>
Don't forget to remove the XML comments as they're invalid where they are.
不要忘记删除XML注释,因为它们无效。
#2
1
Please see this link:
请看这个链接:
Exposing a WCF Service With Multiple Bindings and Endpoints
公开具有多个绑定和端点的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.
#1
9
This might help:
这可能有所帮助:
http://msdn.microsoft.com/en-us/library/ms734765.aspx
In a nutshell you need to configure your service endpoints and behaviour. Here is a minimal example:
简而言之,您需要配置服务端点和行为。这是一个最小的例子:
<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>
Don't forget to remove the XML comments as they're invalid where they are.
不要忘记删除XML注释,因为它们无效。
#2
1
Please see this link:
请看这个链接:
Exposing a WCF Service With Multiple Bindings and Endpoints
公开具有多个绑定和端点的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.