gpt4 book ai didi

asp.net-mvc-3 - MVC 3 应用程序中的 HttpContext.Current.Session 为 null

转载 作者:行者123 更新时间:2023-12-04 22:15:32 25 4
gpt4 key购买 nike

我有一个双语 MVC 3 应用程序,我使用 cookie 和 session 在 Session_start 文件内的 Global.aspx.cs 方法中保存“文化”,但直接在它之后, session 为空。

这是我的代码:

    protected void Session_Start(object sender, EventArgs e)
{
HttpCookie aCookie = Request.Cookies["MyData"];

if (aCookie == null)
{
Session["MyCulture"] = "de-DE";
aCookie = new HttpCookie("MyData");
//aCookie.Value = Convert.ToString(Session["MyCulture"]);
aCookie["MyLang"] = "de-DE";
aCookie.Expires = System.DateTime.Now.AddDays(21);
Response.Cookies.Add(aCookie);
}
else
{
string s = aCookie["MyLang"];
HttpContext.Current.Session["MyCulture"] = aCookie["MyLang"];
}
}

第二次它进入“else 子句”,因为 cookie 存在;在我的过滤器中,当它尝试设置文化时, Session["MyCulture"] 为空。
   public void OnActionExecuting(ActionExecutingContext filterContext)
{

System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(HttpContext.Current.Session["MyCulture"].ToString());
System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(HttpContext.Current.Session["MyCulture"].ToString());
}

最佳答案

为什么要在 ASP.NET MVC 应用程序中使用 HttpContext.Current 永远不要 使用它。即使在经典的 ASP.NET webforms 应用程序中,这也是邪恶的,但在 ASP.NET MVC 中,这是一场灾难,它使这个漂亮的 web 框架失去了所有乐趣。

还要确保在尝试使用该值之前测试 session 中是否存在该值,因为我怀疑在您的情况下不是 HttpContext.Current.Session 为空,而是 HttpContext.Current.Session["MyCulture"] 。所以:

public void OnActionExecuting(ActionExecutingContext filterContext)
{
var myCulture = filterContext.HttpContext.Session["MyCulture"] as string;
if (!string.IsNullOrEmpty(myCulture))
{
Thread.CurrentThread.CurrentUICulture = new CultureInfo(myCulture);
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(myCulture);
}
}

所以也许你的问题的根源是 Session["MyCulture"] 没有在 Session_Start 方法中正确初始化。

关于asp.net-mvc-3 - MVC 3 应用程序中的 HttpContext.Current.Session 为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7705802/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com