2014-01-10 100 views
2

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

下面是我的web.config。有人可以帮助我了解如何通过HTTPS/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> 

回答

0

serviceMetadata元件的httpGetEnabledhttpsGetEnabled属性控制访问服务的WSDL文档。对于基于webHttpBinding的端点,提供WSDL文档不适用,因为WCF提供自动生成的帮助“网站”来记录服务。

使用webHttp端点行为,以使帮助网站为shown on this MSDN page.

更新:因为我忽略的是,在讨论的配置都准备好了的建议...

看来,越来越多个绑定和SSL工作正确可能需要更多的配置。这MSDN forum question and answer提供更多的细节。它使用名为standardEndpoint的WCF 4.0配置功能。答案还包含一个带有示例代码的ZIP文件。

+0

我已启用webHttp helpPage属性。使用HTTPS,页面不会呈现。它的结果是404。 – Martin

+0

对不起,没有注意到它急于回答:) Sooo,你有什么应该工作。如果尝试访问HTTP帮助(端点仍然配置为SSL),您会得到什么吗? –

+0

由于IIS设置为需要SSL,因此HTTP版本被阻止。如果我禁用它,页面会回来。问题是我不想禁用SSL,我需要它。 – Martin