2010-04-12 3 views
1

내 클라이언트가 내 클라이언트의 웹 서버에 설치되어야합니다. 일부 클라이언트는 SSL을 사용하고 일부 클라이언트는 사용하지 않으려합니다. 내 응용 프로그램은 WCF 서비스를 가지고 있으며 현재 각 설치마다 web.config에 들어가서 클라이언트의 SSL 상황에 따라 <security mode="Transport">에서 <security mode="TransportCredentialOnly">으로 보안 모드를 전환해야합니다. 런타임시 클라이언트 바인딩을 설정할 수 있습니다. 그러나 런타임에 (서버 측에서) 서비스 바인딩을 설정하는 방법이 있는지 알고 싶습니다.WCF는 런타임에 서비스중인 바인딩을 설정합니다.

답변

1

예, 절대적으로! WCF 서비스를 호스팅하는 방법에 따라 다릅니다. 그것은 웹 서버에 설치되어야한다고, 나는 당신이 IIS에서 호스팅한다고 가정합니다.

그런 경우 자신의 자손 인 ServiceHostFactory을 만들어야합니다. 실제로 큰 차이는 아닙니다.

의 인스턴스를 필요에 맞게 IIS에 반환하려면 CustomServiceHostFactory이 필요합니다.

사용자 정의 팩토리의 CreateServiceHost 메소드에서 기본적으로 사용자의 ServiceHost을 설정하고 모든 엔드 포인트, 동작, 바인딩 등을 모두 코드로 구성합니다.이 모든 것이 모두 사용자가 직접 제어 할 수 있습니다. 필요에 따라 서비스를 구성하려면 여기에서해야 할 일을 모두 수행 할 수 있습니다.

서비스를 호스팅하려면.

<% @ ServiceHost Language="C#" Service="YourService" 
       Factory="CustomServiceHostFactory" %> 

을하고 바로 그거야 : 당신은 공장으로 CustomServiceHostFactory 사용하는 것을 포함 할 MyService.svc 파일을 적용해야합니다!

자세한 내용은 MSDN의 Extending Hosting Using ServiceHostFactory을 확인하고 CodeProject의 A Custom ServiceHostFactory 샘플을 참조하십시오.

관련 문제