Asp.net mvc 3 每请求代码

Asp.net mvc 3 每请求代码,asp.net-mvc-3,httpcontext,Asp.net Mvc 3,Httpcontext,我有一个方法,我想在分配了Context.Current.User之类的内容之后,每个Http请求运行一次 public static void AddPrincipal(HttpContext context) { var users = DependencyResolver.Current.GetService<IRepository<User>>(); var currentUser = users.Retrieve(

我有一个方法,我想在分配了Context.Current.User之类的内容之后,每个Http请求运行一次

    public static void AddPrincipal(HttpContext context)
    {
        var users = DependencyResolver.Current.GetService<IRepository<User>>();
        var currentUser = users.Retrieve(u => u.Username == context.User.Identity.Name);
        var principal = new Principal(currentUser);
        context.Items.Add("Principal", principal);
    }
在ASP.NETMVC3中实现这一点的最佳方法是什么

我试图把它放在控制器工厂,但我的页面上有一些局部操作,所以它运行了多次

我还在Global.asax中尝试了BeginRequest,但HttpContext.Current.User此时为空


提前谢谢

首先,我要说的是,基于您正在做的工作,您可能希望更多地了解构建自定义或至少是自定义,但要回答您的问题:

您可以尝试订阅应用程序_AuthenticateRequest事件,该事件应该在HttpRequest完成身份验证后引发,该事件应该在HttpContext.Current.User被填充后引发

在Global.asax中执行类似操作

protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
    AddPrinciple(HttpContext.Current);
}

感谢您的快速响应!刚刚尝试过,但由于某些奇怪的原因,HttpContext.Current.User在应用程序_AuthenticateRequest中仍然为null..:您是否设置了ASP.NET身份验证/成员资格?另外,您尝试使用的HttpRequest是否经过身份验证?