无法通过 HTTPS 显示 WCF REST 帮助页



我正在编写一个支持SOAP和REST的WCF Web服务。我还启用了 WCF REST 帮助页,该页对 Web 服务的使用者非常有用。由于我在 IIS 和 web.config 中启用了 SSL(见下文),因此我无法再获取 WCF REST 帮助页面。如果我访问https://myHost/myWebService/help,则会收到HTTP 404错误。在启用SSL之前,我可以访问该页面。

下面是我的网络配置。有人可以帮助我了解如何通过HTTP/SSL启用WCF REST帮助页面吗?

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <services>
      <service name="MyNs.MyServiceWebserviceImpl" behaviorConfiguration="DefaultBehavior">
        <endpoint name="MyServiceRestEndpoint" address="" binding="webHttpBinding" behaviorConfiguration="MyServiceRestBehavior" contract="MyNs.IMyServiceWebservice" />
        <endpoint name="MyServiceSoapEndpoint" address="soap" binding="basicHttpBinding" bindingConfiguration="MyServiceSoapBinding" behaviorConfiguration="MyServiceSoapBehavior" contract="MyNs.IMyServiceWebservice"  />
        <endpoint name="MyServiceMexEndpoint" address="mex" binding="mexHttpsBinding" bindingConfiguration="" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="DefaultBehavior">
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="MyServiceRestBehavior">
          <webHttp helpEnabled="true" defaultOutgoingResponseFormat="Json" automaticFormatSelectionEnabled="true" />
        </behavior>
        <behavior name="MyServiceSoapBehavior" />
      </endpointBehaviors>
    </behaviors>
    <bindings>
      <webHttpBinding>
        <binding name="MyServiceRestBinding">
          <security mode="Transport" />
        </binding>
      </webHttpBinding>
      <basicHttpBinding>
        <binding name="MyServiceSoapBinding">
          <security mode="Transport" />
        </binding>
      </basicHttpBinding>
    </bindings>
  </system.serviceModel>
</configuration>

serviceMetadata元素的httpGetEnabledhttpsGetEnabled属性控制对服务 WSDL 文档的访问。对于基于webHttpBinding的终结点,提供 WSDL 文档不适用,因为 WCF 提供了一个自动生成的帮助"网站"来记录服务。

使用webHttp终结点行为启用帮助网站,如此 MSDN 页上所示。

更新:因为我忽略了问题中的配置都准备好了这个建议......

看来,让多个绑定和 SSL 正常工作可能需要比显而易见的更多的配置。此 MSDN 论坛问题和解答提供了更多详细信息。它使用名为 standardEndpoint 的 WCF 4.0 配置功能。答案还包含一个带有示例代码的 ZIP 文件。

最新更新