2009-09-09 21 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; 
} 

然後創建一個將消息檢查器應用到客戶端運行時的端點行爲。您可以將行爲應用爲屬性,或使用行爲擴展元素。

這是一個很好的example如何添加一個HTTP用戶代理頭到所有的請求消息。我在我的一些客戶中使用了這個功能。毫無疑問,您可以爲任何標題做類似的事情。您也可以通過執行IDispatchMessageInspector在服務端執行相同的操作。

這是你想到的嗎?