【发布时间】:2012-06-15 13:24:18
【问题描述】:
我有一个 WCF 服务需要知道调用用户的 Principal。
在我拥有的服务的构造函数中:
Principal = OperationContext.Current.IncomingMessageHeaders.GetHeader<MyPrincipal>("myPrincipal", "ns");
在调用代码中我有类似的东西:
using (var factory = new ChannelFactory<IMyService>(localBinding, endpoint))
{
var proxy = factory.CreateChannel();
using (var scope = new OperationContextScope((IContextChannel)proxy))
{
var customHeader = MessageHeader.CreateHeader("myPrincipal", "ns", Thread.CurrentPrincipal);
OperationContext.Current.OutgoingMessageHeaders.Add(customHeader);
newList = proxy.CreateList();
}
}
这一切都很好。
我的问题是,如何避免将所有代理方法调用包装在 using (var scope...{ [create header and add to OperationContext] 中?
我可以创建一个自定义 ChannelFactory 来处理将 myPrincipal 标头添加到操作上下文吗?这样的事情会节省大量的复制/粘贴,我不想这样做,但我不知道如何实现它:)
谢谢
【问题讨论】:
标签: wcf header wcf-security