在 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 设置会话值。
我试过 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 设置会话值。