gpt4 book ai didi

c# - 当 OperationContext.Current 为 null 时访问 WCF MessageHeader

转载 作者:太空狗 更新时间:2023-10-29 20:11:53 26 4
gpt4 key购买 nike

我有一个使用自定义 UserNamePasswordValidator 进行保护的 WCF。我需要访问通常在以下位置可用的内容:

OperationContext.Current.RequestContext.RequestMessage.Headers.To

所以我可以解析 URL。但是,OperationContext.Current 为空。有没有办法在没有 OperationContext 的情况下获取消息 header ?

最佳答案

是的,可以通过 Message Inspectors 实现。

OperationContextUserNamePasswordValidator.Validate 期间不可用方法,因为它将在稍后的管道中创建,当调用被分派(dispatch)到适当的服务方法时。

通常,您会在 WCF 管道的早期使用 Message Inspectors 拦截传入和传出的消息。 。然而这对你的情况不起作用,因为Message Inspectors are invoked only after the request has successfully been authenticated .

如果您需要在身份验证之前检查传入的 HTTP 请求,您唯一的选择是在以 ASP.NET 兼容模式运行的 IIS 中托管您的 WCF 服务。这样您就可以通过 HttpContext 访问请求的 URL类:

public override void Validate(string userName, string password)
{
string url = HttpContext.Current.Request.Url.AbsoluteUri;
}

相关资源:

关于c# - 当 OperationContext.Current 为 null 时访问 WCF MessageHeader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3550718/

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