2017-01-25 15 views
2

WCF 응용 프로그램에서 일부 고급 모니터링을 위해 IDispatchMessageInspector을 사용합니다. 오류가 발생하고 오류가 발생하지 않으면 입니다..어떻게 예외 개체를 IDispatchMessageInspector 내부에서 가져올 수 있습니까?

예외 유형에 따라 특정 조치를 수행해야하므로 IDispatchMessageInspector.BeforeSendReply 메소드에 도달하면 서비스에서 예외가 발생하는 방법을 찾고 있습니다.

나는 이 아니고입니다. 이미 사용자 정의 IErrorHandler을 사용하여 오류를 수정하고 \ logging하고 있습니다. 나는 IErrorHandler에 그리고 난 다시 IDispatchMessageInspector에있을 때 간단하게 읽고,하지만 난 내장 뭔가를 선호하는 경우

은 내가 OperationContext에 예외를 추가하는 방법에 대해 생각했다.

어떤 식 으로든 내가 거기에 IDispatchMessageInspector.BeforeSendReply 메소드에있을 때 예외를 가져올 수 있습니까? 어딘가 OperationContext 어쩌면?

답변

0

IDispatchMessageInspector 인터페이스는 클라이언트에게 보내기 전에이 해당 응답 메시지뿐만 아니라 파견되기 전에 당신이 엔드 포인트에 도달하는 메시지를 볼 수 있습니다.

포인트의 몇 유용 할 수있는 BeforeSendReply() 방법에 대해 알게 될 :

  • 만약 메시지가 편도 작동했다 파견 된 운영, 의 실행이 완료되면이 메서드는 여전히 의 IDispatchMessageInspector 구현에서 WCF 런타임에 의해 호출됩니다. 그러나 응답 메시지 인 을 나타내는 "reply"인수는 null이므로 메시지를 조작하기 전에 을 확인하십시오.
  • 회신 메시지의 IsFault 속성을 검사하여 메시지 이 예외/오류를 발생 시키도록 발송 된 작업을 구현에서 감지 할 수 있습니다. 작업 에 대해서도 마찬가지입니다 (클라이언트가 메시지를 볼 수는 없지만 서버 측 디스패처는 여전히 메시지 관리자에게 올바르게 알립니다).
+0

답변 주셔서 감사합니다.하지만 내 질문에 답변하지 않았습니다. 메시지에 오류가 있는지 확인할 수 있으며 호출이 발생하면 예외 인스턴스가 필요하며 성공 및 실패 메시지에 대해 수행 할 모니터링 로직이 있으므로 IDispatchMessageInspector 내부에 필요합니다. –