htmlHelper.ViewContext.HttpContext.Session为null

时间:2017-05-18 14:55:58

标签: asp.net-mvc nullreferenceexception httpcontext

我正在尝试在我正在处理的HtmlHelper项目中使用MVC,但我对这个问题感到困惑。当我尝试在页面加载时在导航/菜单部分中调用辅助方法时,为什么Session为空?它适用于我在项目中使用它的任何其他地方但当我尝试在我的布局或菜单部分中使用它时,我得到这个空引用异常。

public static class HtmlHelpers
{
    public static ApplicationUser UserInformation(this HtmlHelper htmlHelper)
    {
        var httpContext = htmlHelper.ViewContext.HttpContext;

        if (httpContext.Session["CurrentUser"] == null)
        {
            // Get user information
            var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext());
            var applicationUser = userManager.FindById(httpContext.user.Identity.GetUserId());

            httpContext.Session["CurrentUser"] = applicationUser;
        }

        return (ApplicationUser) httpContext.Session["CurrentUser"];
    }
}

1 个答案:

答案 0 :(得分:0)

尝试System.Web.HttpContext.Current而不是htmlHelper.ViewContext.HttpContext

示例:

 var httpContext = System.Web.HttpContext.Current;

     if (httpContext.Session["CurrentUser"] == null)
    {
        // Do somthing.
    }

您可以在此处获取有关session的更多信息。

public static ApplicationUser UserInformation(this HtmlHelper htmlHelper,HttpContextBase httpContext)
{
    if (httpContext.Session["CurrentUser"] == null)
    {

    } 
}

您可以获得有关session

的更多信息