2009-07-15 5 views
3

WCF 웹 서비스에서 SSL로 사용자 지정 바인딩을 사용하려고 시도한 적이 있습니까? basicHttpBinding 및 wsHttpBinding을 사용하여이 작업을 수행하는 방법에 대한 많은 예제를 보았습니다.하지만 customBinding에 대해서는 항상 동일한 오류가 발생합니다.사용자 지정 바인딩을 사용하는 SSL WCF

<system.serviceModel> 
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"> 
    </serviceHostingEnvironment> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="MyServiceBehavior"> 
      <serviceMetadata httpsGetEnabled="true" /> 
      <serviceDebug includeExceptionDetailInFaults="true" /> 
     </behavior> 
     </serviceBehaviors> 
    </behaviors> 
    <bindings> 
     <customBinding> 
     <binding name="binaryHttps"> 
      <binaryMessageEncoding /> 
      <httpsTransport /> 
     </binding> 
     </customBinding> 
    </bindings> 
    <services> 
     <service behaviorConfiguration="MyServiceBehavior" name="MyService"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="https://(myserver)/"/> 
      </baseAddresses> 
     </host> 
     <endpoint address="" 
     binding="customBinding" bindingConfiguration="binaryHttps" 
     contract="MyService" /> 
     <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" /> 
     </service> 
    </services> 
    </system.serviceModel> 

이 실제로 우리가 웹에서 서비스에 액세스가 WSDL의 수와 비주얼 스튜디오 내부에 서비스 참조를 추가 할 수 있습니다 : 특히 제가 현재 (아직 가장 성공적인 구성) 작업을하고있어 다음과 같이 보입니다 하지만 우리가 Silverlight-3 응용 프로그램에 실제로 사용하려고하면 무한정 응답을 기다리고 시간을 초과하지 않습니다. 실제로 내 컴퓨터에서 (메모리 6GB로) 잠시 후 저에게 메모리 부족 문제가 발생합니다. 이상한 점은 개발 환경 (완벽하게 VS 응용 프로그램 호스트 사용)에서이 모든 작업이 완벽하게 작동한다는 것입니다. 실제 SSL 인증서를 사용하여 실제 서버에 배포하려고 시도하기 전까지는 아닙니다. 팝업.

나는이 문제에 대한 해결책을 상당히 철저히 수색했지만 지금까지 아무 것도 발견하지 못했으며 모든 것을 시도해 보았습니다. 이전에는이 ​​문제가 발생했는지 알고 있습니까?

답변

1

그래서 우리 web.config에서 문제가 발생하지 않았다는 사실이 밝혀졌습니다. IIS 7 및 와일드 카드 SSL 인증서의 문제와 관련이있었습니다.

즉, IIS 7에서는 SSL 연결 및 인증서에 IP를 바인딩 할 때 호스트 이름을 지정할 수 없습니다. 그것은 명백한 호스트 이름을 추출 할 수있는 비 와일드 카드 SSL 인증서를 기대하기 때문입니다. 우리가해야할 일은 {WindowsDir} \ {System32} \ {Inetsrv} \ {config}의 applicationHost.config 파일에 들어가서 웹 서비스의 바운드 IP 주소로 항목을 찾아 명시 ​​적으로 (ip) :(호스트 이름). IIS 구성 GUI에서도 제대로 표시되었습니다.

이렇게하면 모든 서버에서 SSL 채널을 제외한 모든 채널이 완전히 꺼지고 모든 것이 아름답게 작동합니다.

끝내 신께 감사드립니다!

-1

AFAIK, SSL을 사용하면 성능에 문제가 있습니다. 우리는 WCF behiovr을 사용하여 인증을 수행합니다. 우리가 사용하는 방법은 Silverlight => ASP.NET => WCF입니다. 우리는 Silverlight와 WCF에서 Endpoint behivor를 구성했습니다. 서비스를 호출 할 때마다 우리는 인증을 위해 토큰을 전달했습니다.

Silverlight의 ClientConfig에서 사용자 지정 바인딩을 사용할 수 있습니다.

+0

우리는 ClientConfig 파일이 아니라 Silverlight 3 라이브러리의 코드에서 바인딩을 수행하고 있지만 예, 모든 것이 로컬 컴퓨터에서 제대로 작동합니다. 배포 할 때까지는 문제가 없었습니다. – user138420

+0

그리고 확인하기 위해 http 모드의 독립 실행 형 서버에서 사용자 지정 바인딩을 사용하여 완벽하게 실행되는 서비스를 얻을 수 있었지만 응용 프로그램에서는이를 잘라 내지 않습니다. 시도하고 https로 전환 할 때 문제가 나타납니다. – user138420

관련 문제