我有一个使用自定义UserNamePasswordValidator保护的WCF。我需要访问通常可用的内容:
OperationContext.Current.RequestContext.RequestMessage.Headers.To
所以我可以解析URL。 但是,OperationContext.Current为null。有没有办法在没有OperationContext的情况下获取邮件头?
答案 0 :(得分:8)
是的,可以通过Message Inspectors。
OperationContext方法期间UserNamePasswordValidator.Validate不可用,因为稍后将在调用已调度到适当的服务方法时在管道中创建它。
通常,您可以使用 Message Inspectors 拦截WCF管道中的传入和传出消息。但是,由于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;
}
相关资源: