代码之家  ›  专栏  ›  技术社区  ›  Mark Boltuc

当operationcontext.current为空时访问wcf messageheader

wcf
  •  6
  • Mark Boltuc  · 技术社区  · 14 年前

    我有一个正在使用自定义用户名密码验证程序保护的WCF。我需要访问通常在以下位置可用的内容:

    OperationContext.Current.RequestContext.RequestMessage.Headers.To
    

    所以我可以解析URL。 但是,operationContext.current为空。在没有OperationContext的情况下,是否有方法到达消息头?

    1 回复  |  直到 14 年前
        1
  •  8
  •   Community CDub    8 年前

    是的,可以通过消息检查器。

    这个 OperationContext 期间不可用 UserNamePasswordValidator.Validate 方法,因为当调用已调度到适当的服务方法时,将在管道中稍后创建该方法。

    通常,通过使用 Message Inspectors . 然而这 在你的情况下不起作用 ,因为 Message Inspectors are invoked only after the request has successfully been authenticated .

    如果你需要 验证前检查传入的HTTP请求 你唯一的选择是 在以ASP.NET兼容模式运行的IIS中承载WCF服务 . 这样,您就可以通过 HttpContext 班级:

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

    相关资源: