在Windows服务中托管的WCF服务(basicHttpBinding)的WSDL URL

时间:2008-10-03 16:56:22

标签: php wcf url wsdl basichttpbinding

我正在其中一台服务器上的Windows服务中托管WCF服务。在使用basicHttpBinding并在.NET中构建测试客户端(最终工作)后,我继续尝试使用SoapClient类从PHP访问它。最终的消费者将是一个PHP站点,所以我需要在PHP中使用它。

当我必须在PHP代码中的SoapClient类的构造函数中输入WSDL url时,我感到难过。 WSDL在哪里?我只有:

http://172.27.7.123:8000/WordServicehttp://172.27.7.123:8000/WordService/mex

这些都不会暴露WSDL。

作为WCF的新手,我可能会问一个愚蠢的事情(或者我可能在某处有错误的假设)。请温柔:D

不,http://172.27.7.123:8000/WordService?wsdlhttp://172.27.7.123:8000/WordService没有任何不同之处:(

我是否被迫在IIS中托管它?我被迫使用常规的WebService吗?

2 个答案:

答案 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注释,因为它们无效。

答案 1 :(得分: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.
相关问题