在 MVC 中呈现控制器时,有什么方法可以将用户信息设置为来自 cookie 的会话值?

Is there any way where I can set user information into Session values from cookies while rendering a controller in MVC?

我试过 Global.asax.cs

protected void Application_BeginRequest(object sender, EventArgs e)
        {
            try
            {
                var cookiesDataUserinfo = HttpContext.Current.Request.Cookies["UserInfo"];
                if (cookiesDataUserinfo != null)
                {
                    Session["UserId"] = cookiesDataUserinfo["UserId"].ToString();
                }
            }
            catch (Exception ex)
            {
                string msg = ex.Message;
            }
        }

但我收到错误消息“会话状态在此上下文中不可用。” 我还尝试在控制器的构造函数中从 cookie 加载数据。但是 cookies 在构造函数中是空的。 在我的 MVC 项目中呈现任何视图之前,我可以通过 cookie 设置会话值吗?

我找到了我想要的解决方案。我需要在 Global.asax.cs

中使用 Application_AcquireRequestState 方法
protected void Application_AcquireRequestState(object sender, EventArgs e)
{
    try
    {
        var cookiesDataUserinfo = HttpContext.Current.Request.Cookies["UserInfo"];
        if (cookiesDataUserinfo != null)
        {
            Session["UserId"] = cookiesDataUserinfo["UserId"].ToString();
        }
    }
    catch (Exception ex)
    {
        string msg = ex.Message;
    }
}

对于每个请求,都会调用 Application_AcquireRequestState 方法,如果可用,我可以从 Cookie 设置会话值。