2016-01-15 76 views
0

我必須添加頭到wcf服務調用。包裝樣板wcf客戶端代碼

我實現了這種方式:

var client = new ServiceReference1.HeaderConsumeClient("NetTcpBinding_IHeaderConsume"); 
using (OperationContextScope scope = new OperationContextScope(client.InnerChannel)) 
{ 
    Guid apiKey = Guid.NewGuid(); 
    MessageHeader<Guid> mhg = new MessageHeader<Guid>(apiKey); 
    MessageHeader untyped = mhg.GetUntypedHeader("apiKey", "ns"); 
    OperationContext.Current.OutgoingMessageHeaders.Add(untyped); 

    var res = client.GetData(1); 
    Console.WriteLine(res); 
} 

但我想使沒有這樣的樣板代碼通用的解決方案在每一個服務調用。

最常見的方式,我認爲 - 是讓我自己的TT4模板幷包裹生成的代理中的每個調用。

但在此之前,我想知道,有沒有其他方法來覆蓋或修飾wcf生成的類方法?

例如 - 我可以使用統一和註冊這個服務接口的實現,並添加攔截器到這個實例的所有調用。但它看起來有點過於複雜。

回答

1

您可以使用自定義端點行爲在每個服務調用上執行通用操作。您也可以編寫自定義服務和操作行爲。

例如,您可以實施IClientMessageInspector並使用BeforeSendmethod,您可以操縱要發送的消息。

msdn中有一個example

+0

看起來很清楚,可配置的解決方案。我會嘗試 – Mitklantekutli

+0

daryal,非常感謝! – Mitklantekutli