2013-02-26 2 views
3

현재 HTTP를 통해서만 노출되는 ServiceContract IEventService에 의해 정의 된 Http Rest WCF4 서비스가 있습니다.WCF 하나의 ServiceContract에서 HTTP와 HTTPS를 다시 혼합하기

난 단지 HTTPS를 통해 작동하도록 OperationContracts의 일부을 만드는 임무가 주어왔다 그래서 별도의 ServiceContract에 그 방법을 분할 한 IEventServiceHTTPS

은 자동으로 IIS7.5을 사용하여 내 dev에 상자에이 호스팅라는 서명 된 인증서 인 경우 IEventServiceHTTPS의 일부인 메서드는 HTTPS를 통해 전달되며 HTTP를 통해 정상적으로 호출됩니다.

그러나 IEventService에 의해 노출 된 HTTP 메소드는 작동하지 않습니다.

나는 HTTP 메소드에 액세스 할 때 다음과 같은 얻을 : 내 변경

HTTP Error 403.4 - Forbidden 
The page you are trying to access is secured with Secure Sockets Layer (SSL). 

의 Web.config :

<system.serviceModel> 
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true"> 
     <serviceActivations> 
     <add service="Api.EventService" relativeAddress="EventService.svc" factory="Api.UnityServiceHostFactory"/> 
     </serviceActivations> 
    </serviceHostingEnvironment> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="Api.EventServiceBehavior"> 
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> 
      <serviceDebug includeExceptionDetailInFaults="true"/> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="WebBehavior"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <services> 
     <service behaviorConfiguration="Api.EventServiceBehavior" name="Api.EventService"> 
     <endpoint address="" binding="webHttpBinding" behaviorConfiguration="WebBehavior" bindingConfiguration="webBindingHTTP" contract="Api.IEventService"/> 
     **<endpoint address="" binding="webHttpBinding" behaviorConfiguration="WebBehavior" bindingConfiguration="webBindingHTTPS" contract="Api.IEventServiceHTTPS"/>** 
     </service> 
    </services> 
    <bindings> 
     <webHttpBinding> 
     <binding name="webBindingHTTP"> 
      <security mode="None"></security> 
     </binding> 
     **<binding name="webBindingHTTPS"> 
      <security mode="Transport"> 
      </security> 
     </binding>** 
     </webHttpBinding> 
    </bindings> 
    </system.serviceModel> 

어떤 도움을 크게 감상 할 수, 감사합니다.

답변

1

IIS vdir [SSL 설정] -> [SSL 필요] -> true로 인해이 오류가 발생했다고 생각합니다. 동일한 서비스에서 http 및 https 엔드 포인트를 모두 액세스 할 수있게하려면 vdir에서 비보안 http를 수행 할 수 없으므로이 설정을 선택 취소하십시오.

+2

** 정확하게 ** 잘못되었습니다. 많은 감사합니다! 올리버 –