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

Php 托管在Windows服务内的WCF服务(basicHttpBinding)的WSDL URL,php,wcf,url,wsdl,basichttpbinding,Php,Wcf,Url,Wsdl,Basichttpbinding,我正在我们的一台服务器上的Windows服务中托管WCF服务。在basicHttpBinding中使其工作并在.NET中构建了一个测试客户机(最终成功)之后,我继续尝试使用SoapClient类从PHP访问它。最后的消费者将是一个PHP网站,所以我需要让它在PHP中消费 当我必须在PHP代码中的SoapClient类的构造函数中输入WSDL url时,我被难住了。WSDL在哪里?我所拥有的只是: 及 所有这些都不会公开WSDL 作为WCF的新手,我可能会问一个愚蠢的问题(或者我可能在某个地方有

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

当我必须在PHP代码中的SoapClient类的构造函数中输入WSDL url时,我被难住了。WSDL在哪里?我所拥有的只是:

所有这些都不会公开WSDL

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

不,不显示任何与以下内容不同的内容:(

我是否被迫在IIS中托管它?我是否被迫使用常规Web服务?

请查看此链接:

与以前的ASMX服务不同,WCF的WSDL(web服务定义语言) 服务不是自动生成的。前面的图片甚至告诉我们 “此服务的元数据发布当前已禁用。”。 这是因为我们尚未将服务配置为公开有关它的任何元数据。 要公开服务的WSDL,我们需要配置服务以提供元信息。注意: mexHttpBinding还用于共享有关服务的元信息 这个名字不是很“gump”,它代表元数据交换。 这可能有助于:

简而言之,您需要配置您的服务端点和行为。以下是一个简单的示例:

<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>

behaviorConfiguration=“SimpleServiceBehavior”>
httpGetEnabled=“true”
policyVersion=“Policy15”/>

不要忘记删除XML注释,因为它们在哪里是无效的。

很抱歉,链接似乎是无效的broken@Andrei:链接似乎很好,MSDN可能是在他们的周末升级或其他什么。很好。感谢搜索功能。找到了您的answer@AndreiRinea或者Kev wsdl的url是什么?也谢谢:)-您指出的文档还显示了设置为true.Nice的httpGetEnabled。感谢搜索,找到了您的问题和答案
<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>