【发布时间】:2016-01-15 13:42:35
【问题描述】:
我必须在 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 生成的类方法吗?
例如 - 我可以使用统一并注册此服务接口的实现,并将拦截器添加到对此实例的所有调用。但它看起来有点过于复杂。
【问题讨论】:
标签: c# .net wcf design-patterns inversion-of-control