我必须将标头添加到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生成的类方法吗?
例如 - 我可以使用unity并注册此服务接口的实现,并为所有对此实例的调用添加拦截器。但它看起来有点过于复杂。