2011-05-03 5 views
3

IIS 호스팅 WCF 서비스가 있고 끝점 동작을 추가해야합니다. web.config에 추가 할 수 없습니다. (우리는 플러그인 아키텍처를 지원해야하고 플러그인 작가는 내 Web.config의에 액세스 할 수 없습니다.) 나는 서비스에 대한 정적 생성자에서이 퍼팅 시도 :IIS가 호스팅하는 WCF 서비스를 열려면 끝점 동작을 추가하는 방법

var endpointDispatcher = OperationContext.Current.EndpointDispatcher; 
SilverlightFaultMessageInspector inspector = new SilverlightFaultMessageInspector(); 
endpointDispatcher.DispatchRuntime.MessageInspectors.Add(inspector); 

그러나 "이 말을 예외가 발생합니다 ServiceHost가 열리면 값을 변경할 수 없습니다. " 인스펙터 객체를 추가하기 전에 host.Close()를 호출하면 여전히 동일한 예외가 발생합니다.

var host = OperationContext.Current.Host; 
host.Description.Endpoints[0].Behaviors.Add(new SilverlightFaultBehavior()); 

을하지만 아무런 영향이없는 것으로 보인다

은 나뿐만 아니라이 시도. 끝점 동작이 호출되지 않습니다.

IIS 호스팅 된 WCF 서비스에 끝점 동작을 추가 할 수 있습니까?

+0

Ladislav가 옳습니다. 또한이 주제에 도움이되는 다음 페이지를 발견했습니다. [MSDN : Custom Service Host] (http://msdn.microsoft.com/en-us/library/aa395224%28v=VS.90%29.aspx) [MSDN : ServiceHostFactory 클래스] (http://msdn.microsoft.com/en-us/library/system.servicemodel.activation.servicehostfactory%28v=VS.90%29.aspx#Y228) –

답변

2

ServiceHost이 열리기 전에 (서비스 호스팅을 시작하기 전에) 끝점 동작을 추가 할 수 있습니다. 따라서 서비스를 재설정해야합니다. IIS에서 호스팅되는 서비스에 대한 ServiceHost에 대한 액세스는 .svc 파일에 정의되어야하는 사용자 지정 ServicHostFactory을 통해 이루어집니다. 따라서 일반적으로 사용자 정의 ServiceHostFactory과 같은 것이 필요합니다.이 리비전은 일부 저장소에서 동작을로드하고 CreateServiceHost 메소드에서 사용합니다. 비헤이비어는 응용 프로그램을 다시 시작한 후에 만 ​​적용됩니다.

+0

"응용 프로그램을 다시 시작한 후"? 그러면 애플리케이션이 시작될 것입니다 (예 : global.asax의 Application_Start가 호출 됨). ServiceHostFactory가 serivce 호스트를 생성하면 애플리케이션이 다시 시작됩니다 (Application_Start를 다시 호출). ServiceHostFactory에서 초기에 엔드 포인트 동작을 사용하여 서비스 호스트를 만들 수있는 방법이 있습니까? –

관련 문제