2012-04-20 3 views
0

내 WCF REST 서비스를 통해 트래픽이 발생하는 요청 매개 변수와 응답 본문을 기록하려고합니다. IDispatchMessageInspector에서 전체 응답에 액세스 할 수 있습니다. 또한 Application_EndRequest의 작업 중에 Context.Items에 저장하는 요청 헤더 및 기타 항목에 액세스 할 수 있습니다.IDispatchMessageInspector에서 Application_EndRequest로 응답 본문 전달

디버깅하는 동안 IDispatchMessageInspector를 통해 작업을 확인한 다음 Application_EndRequest를 확인합니다. 내 생각은 응답을 IDispatchMessageInspector 어딘가에 저장하고 Application_EndRequest에서 응답을 검색하고 다른 요청 매개 변수와 함께 기록합니다.

내 질문은 : Application_EndRequest에서 액세스 할 수 있도록 어디에서 응답을 저장해야합니까?

답변

1

저는 현재 비슷한 것을 시도하고 있습니다. 들어오는 요청을 로깅하여 데이터베이스에 저장하고 로그 ID를 내 끝점으로 전달하여 나중에 사용하려고합니다.

편집 : 당신의 AfterReceiveRequest 호출에서, 단순히 현재 operationcontext의 IncomingMessageProperties 특성에 무엇을해야 추가 고정 그때 내 엔드 포인트에 LogRequestID을 읽을 수

public object AfterReceiveRequest(ref Message request, IClientChannel channel, InstanceContext instanceContext) 
    { 
     MessageBuffer buffer = request.CreateBufferedCopy(Int32.MaxValue); 
     request = buffer.CreateMessage(); 
     int LogRequestID = Logging.LogIncomingRequest(buffer.CreateMessage()); 

     OperationContext.Current.IncomingMessageProperties.Add("LogRequestID", LogRequestID); 

     return null; 
    } 

아래의 코드 다음 코드를 입력하십시오 :

OperationContext.Current.IncomingMessageProperties["LogRequestID"] 

또한 필요한 경우 더 복잡한 것을 전달할 수 있습니다. 희망이 도움이됩니다.

관련 문제