我有一个使用自定义UserNamePasswordValidator保护的WCF.我需要访问通常可用的内容:
OperationContext.Current.RequestContext.RequestMessage.Headers.To
Run Code Online (Sandbox Code Playgroud)
所以我可以解析URL.但是,OperationContext.Current为null.有没有办法在没有OperationContext的情况下获取邮件头?
Enr*_*lio 10
是的,可以通过Message Inspectors.
该的OperationContext的过程中无法使用UserNamePasswordValidator.Validate方法,因为它会在管道中,当呼叫已被分派到相应的服务方法后创建的.
通常,您可以使用Message Inspectors在WCF管道中尽早拦截传入和传出消息.但是,这在您的情况下不起作用,因为仅在成功验证请求后才调用Message Inspectors.
如果需要在身份验证之前检查传入的HTTP请求,则唯一的选择是在ASP.NET兼容模式下运行的IIS中托管WCF服务.这样您就可以通过HttpContext类访问请求的URL :
public override void Validate(string userName, string password)
{
string url = HttpContext.Current.Request.Url.AbsoluteUri;
}
Run Code Online (Sandbox Code Playgroud)
相关资源:
| 归档时间: |
|
| 查看次数: |
5603 次 |
| 最近记录: |