2012-01-16 2 views
0

다중 종단점이있는 WCF 서비스로 작업하고 있습니다. 각 요청을 처리하기 전에 메시지 헤더를 검사하기 위해 BehaviorExtensionElement, IServiceBehavior, IDispatchMessageInspector의 메소드를 구현했습니다. 나는 그것을 시험했고 그것은 wsHttpBinding과 함께 잘 작동한다.IDispatchMessageInspectors를 구현할 때 WCF 서비스가 바인딩과 함께 작동하는지 확인하는 방법

내 서비스 (메시지 관리자가 있음)가 NetTcpBinding, NamedPipe 및 다른 종류의 바인딩에서도 잘 작동하는지 확인하고 싶습니다. 어떻게해야합니까?

답변

0

IDispatchMessageInspector는 요청 메시지를 작업에 전달하기 전에 또는 응답 메시지를 호출자에게 반환하기 전에 인바운드 또는 아웃 바운드 응용 프로그램 메시지를 검사하거나 수정하는 데 사용됩니다.

메시지 검사자는 스택 (디스패치 수준)보다 높으므로 끝점에서 바인딩을 사용하지 않아도됩니다. 예를 들어

: 위의 코드에서 (wsHttp 또는 NetTcp를) 바인딩의 "종류"에 대한 언급이 없다

public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) 
{ 
    foreach (ChannelDispatcherBase cdb in serviceHostBase.ChannelDispatchers) 
    { 
     var cd = cdb as ChannelDispatcher; 

     if (cd != null) 
     { 
      foreach (var ed in cd.Endpoints) 
      { 
       ed.DispatchRuntime.MessageInspectors.Add(new AuthorizationHeaderGetter()); 
       ed.DispatchRuntime.InstanceProvider = new UserTokenInjector(serviceDescription.ServiceType); 
      } 
     } 
    } 
} 

.

이 질문에 대한 답은 어떻게 테스트 할 것인지 확신 할 수 없습니다. ApplyDispatchBehavior에서 테스트 할 내용은 없습니다 (WCF 프레임 워크 제외). 단위 테스트를 작성하여 IDispatchMessageInspector 클래스를 테스트 할 수 있습니다.

관련 문제