gpt4 book ai didi

WCF - 在 header 中传递 CurrentPrincipal

转载 作者:行者123 更新时间:2023-12-02 00:40:41 26 4
gpt4 key购买 nike

我有一个 WCF 服务需要知道调用用户的委托(delegate)人。

在我拥有的服务的构造函数中:

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 header 添加到操作上下文吗?这样的事情会节省我不想做的整个复制/粘贴负载,但我不确定如何实现它:)

谢谢

最佳答案

设置 WCF 主体的正确时间是通过 IAuthorizationPolicy,通过在配置中指定自定义策略。这完全涵盖了 here .如果您尝试在其他点(可能是检查员)设置委托(delegate)人,它可能会被系统重置。

关于WCF - 在 header 中传递 CurrentPrincipal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2689521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com