2009-09-09 5 views

답변

2

IClientMessageInspector를 구현하는 클래스를 만듭니다. BeforeSendRequest 메서드에서 사용자 지정 헤더를 보내는 메시지에 추가하십시오.

public object BeforeSendRequest(ref System.ServiceModel.Channels.Message request, System.ServiceModel.IClientChannel channel) 
{ 
    HttpRequestMessageProperty httpRequestMessage; 
    object httpRequestMessageObject; 

    if (request.Properties.TryGetValue(HttpRequestMessageProperty.Name, out httpRequestMessageObject)) 
    { 
     httpRequestMessage = httpRequestMessageObject as HttpRequestMessageProperty; 

     if (string.IsNullOrEmpty(httpRequestMessage.Headers[USER_AGENT_HTTP_HEADER])) 
     { 
      httpRequestMessage.Headers[USER_AGENT_HTTP_HEADER] = this.m_userAgent; 
     } 
    } 
    else 
    { 
     httpRequestMessage = new HttpRequestMessageProperty(); 
     httpRequestMessage.Headers.Add(USER_AGENT_HTTP_HEADER, this.m_userAgent); 
     request.Properties.Add(HttpRequestMessageProperty.Name, httpRequestMessage); 
    } 

    return null; 
} 

그런 다음 메시지 관리자를 클라이언트 런타임에 적용하는 끝점 동작을 만듭니다. 비헤이비어를 속성으로 적용하거나 비헤이비어 확장 요소를 사용하여 적용 할 수 있습니다.

여기에 모든 요청 메시지에 HTTP 사용자 에이전트 헤더를 추가하는 방법에 대한 example입니다. 나는 이것을 내 고객 몇 명에게 사용하고있다. 의심의 여지없이 어떤 헤더에 대해서도 비슷한 것을 할 수 있습니다. IDispatchMessageInspector을 구현하여 서비스 측면에서도 동일한 작업을 수행 할 수 있습니다.

당신이 염두에 두었던 것이 이것입니까?