2014-01-10 7 views
2

SOAP 및 REST를 지원하는 WCF 웹 서비스를 작성하고 있습니다. 나는 또한 WCF REST Help 페이지를 사용했다. 이것은 웹 서비스의 소비자에게 매우 유용하다. IIS와 web.config (아래 참조)에서 SSL을 활성화 했으므로 WCF REST 도움말 페이지를 더 이상 얻을 수 없습니다. https://myHost/myWebService/help에 액세스하면 HTTP 404 오류가 발생합니다. SSL을 사용하기 전에 해당 페이지에 액세스 할 수있었습니다.HTTPS를 통해 WCF REST 도움말 페이지를 표시 할 수 없습니다.

아래는 내 web.config입니다. 다른 사람이 HTTPS/SSL을 통해 WCF REST 도움말 페이지를 활성화하는 방법을 이해할 수 있도록 도와 주시겠습니까? serviceMetadata 요소의

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

httpGetEnabledhttpsGetEnabled 속성은 서비스 WSDL 문서에 대한 액세스를 제어 할 수 있습니다. webHttpBinding 기반 엔드 포인트의 경우 WCF는 서비스를 문서화하기 위해 자동으로 생성 된 도움말 "웹 사이트"를 제공하므로 WSDL 문서를 제공하는 것은 적용되지 않습니다.

shown on this MSDN page.으로 업데이트에 대한 도움말 사이트를 사용할 수 있도록 webHttp 엔드 포인트 동작을 사용 나는 모든 준비가 문제의 설정이 제안을 한 것으로 간과하기 때문에 ... 그것은 점점 것으로 보인다

여러 바인딩 및 SSL 작업이 올바르지 않은 경우보다 많은 구성이 필요할 수 있습니다. 이 MSDN forum question and answer는 더 자세한 정보를 제공합니다. standardEndpoint이라는 WCF 4.0 구성 기능을 사용합니다. 답변에는 샘플 코드가 포함 된 ZIP 파일도 포함되어 있습니다.

+0

이미 webHttp helpPage 속성을 사용할 수 있습니다. HTTPS를 사용하면 페이지가 렌더링되지 않습니다. 404의 결과입니다. – Martin

+0

죄송합니다, 답변을 서두에서 그것을 발견하지 못했습니다 :) Sooo, 당신은 일을해야합니다. SSL을 사용하여 끝점을 계속 구성한 상태에서 HTTP로 도움말에 액세스하려고하면 아무 것도 얻을 수 있습니까? –

+0

IIS가 SSL을 요구하도록 설정되어 있기 때문에 HTTP 버전이 차단되었습니다. 사용 중지하면 페이지가 다시 나타납니다. 문제는 SSL을 비활성화하지 않으려는 것입니다. – Martin