gpt4 book ai didi

c# - 如何从实现 IServiceBehavior/IOperationBehavior 的属性中获取 OperationContext

转载 作者:太空宇宙 更新时间:2023-11-03 15:57:11 25 4
gpt4 key购买 nike

我有一个实现 IServiceBehavior 的属性来保护我的 WCF 服务,如下所示:

public class AuthorizedServiceAttribute : Attribute, IServiceBehavior
{
#region IServiceBehavior Members

public void AddBindingParameters(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase, Collection<ServiceEndpoint> endpoints, BindingParameterCollection bindingParameters)
{
}

public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{
var token = string.Empty; // to do: get the token from message headers

foreach (var operation in serviceHostBase.Description.Endpoints
.SelectMany(endpoint => endpoint.Contract.Operations))
{
operation.Behaviors.Add(new AuthorizedMethodAttribute { Token = token });
}
}

public void Validate(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase)
{ }

#endregion
}

问题是为了获取消息 header ,我必须获取当前的 OperationContext,但我不知道如何在 ApplyDispatchBehavior 中执行此操作。如果我在安全下的方法中执行此操作,它会起作用。

最佳答案

在这种情况下,我建议使用消息合约:Message Contract

或者您也可以使用 IDispatchMessageInspector:Message Inspector ,或我在评论中提到的 IParameterInspector。

关于c# - 如何从实现 IServiceBehavior/IOperationBehavior 的属性中获取 OperationContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23081150/

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