2011-01-10 11 views
5

나는 SSL을 통한 REST WCF 서비스를 구성하려고 내가 점점 계속 :REST WCF 서비스 SSL을 통한

는 WebHttpBinding이라는 바인딩과 끝점 에 대한 기본 주소가 경기 방식은 https를 찾을 수 없습니다. 등록 된 기본 주소 체계는 [http]입니다.

누군가 내 구성 파일을 살펴볼 수 있습니까? 감사.

<system.web> 
    <compilation debug="true" targetFramework="4.0" /> 
    </system.web> 
    <system.serviceModel> 
    <bindings> 
     <wsHttpBinding> 
     <binding name="wsHttpBinding1"> 
      <security> 
      <message clientCredentialType="UserName" /> 
      </security> 
     </binding> 
     </wsHttpBinding> 
     <mexHttpsBinding> 
     <binding name="mexHttpsBinding1"/> 
     </mexHttpsBinding> 
     <webHttpBinding> 
     <binding name="webHttpBinding1"> 
      <security mode="Transport" /> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="serviceBehavior" name="CompanyX.WebServices.WebApi"> 
     <endpoint address="" behaviorConfiguration="WebApiBehavior" binding="webHttpBinding" 
      bindingConfiguration="webHttpBinding1" contract="CompanyX.WebServices.IWebApi"> 
      <identity> 
      <certificateReference x509FindType="FindBySubjectName" findValue="CompanyXDev" 
       isChainIncluded="false" storeName="My" storeLocation="LocalMachine" /> 
      </identity> 
     </endpoint> 
     <endpoint binding="mexHttpsBinding" bindingConfiguration="mexHttpsBinding1" 
      name="mex" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    <behaviors> 
     <endpointBehaviors> 
     <behavior name="WebApiBehavior"> 
      <webHttp /> 
     </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
     <behavior name="serviceBehavior"> 
      <serviceMetadata httpsGetEnabled="true" httpGetBinding="" httpsGetBinding="webHttpBinding" 
      httpsGetBindingConfiguration="webHttpBinding1" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
      <serviceCredentials> 
      <clientCertificate> 
       <certificate findValue="CompanyXDev" x509FindType="FindBySubjectName" /> 
      </clientCertificate> 
      <serviceCertificate findValue="CompanyXDev" x509FindType="FindBySubjectName" /> 
      <userNameAuthentication userNamePasswordValidationMode="Custom" 
       customUserNamePasswordValidatorType="CompanyX.WebServices.CredentialsValidator, CompanyX.WebServices" /> 
      <peer> 
       <certificate findValue="CompanyXDev" storeLocation="LocalMachine" 
       x509FindType="FindBySubjectName" storeName="My" /> 
      </peer> 
      <issuedTokenAuthentication> 
       <knownCertificates> 
       <add findValue="CompanyXDev" storeLocation="LocalMachine" storeName="My" 
        x509FindType="FindBySubjectName" /> 
       </knownCertificates> 
      </issuedTokenAuthentication> 
      </serviceCredentials> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" 
     multipleSiteBindingsEnabled="true"/> 
    </system.serviceModel> 
<system.webServer> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 

</configuration> 
+5

같은데,하지 않았다 당신은 ? –

+0

Ladislav Mrnka가 나를 웃게했다. +1. – Anders

+0

아, 또 다른 불쌍한 영혼은 RESTful 및 RPC라는 신화 적 개념을 쫓고 있습니다. –

답변

3

당신은 IIS에 바인딩 HTTPS를 추가해야합니다. IIS

  • 클릭 '바인딩 ...'오른쪽에있는 액션 패널에 귀하의 사이트에

    1. 이동합니다.
    2. '추가'를 클릭하십시오.
    3. 'https'를 선택하고 인증서를 선택하십시오.
  • 5

    다음과 같이 추측 해 보겠습니다. Developement 웹 서버 (Cassini)의 Visual Studio에서 서비스를 실행하고 있습니까? 개발 웹 서버는 HTTPS를 지원하지 않습니다. IIS에서 서비스를 호스팅하고 Greg의 조언에 따라 사이트에 HTTPS 바인딩을 추가해야합니다.

    2

    두 가지 선택 :

    1. 는 엔드 포인트에서 전체 주소를 지정합니다.

    2. 예를 들어, 태그에 어딘가에 호스트에 사용되는 기본 주소를 지정 : 사용자가 구성한 서비스 호스트를 통해 조금 가지고있는 것처럼

    <host> 
        <baseAddresses> 
        <add baseAddress="http://localhost:8000/service"/> 
        <add baseAddress="https://localhost:8001/service"/> 
        </baseAddresses> 
    </host>