首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Global.asax的AcquireRequestState或PostAcquireRequestState事件中不可用的会话状态

在Global.asax的AcquireRequestState或PostAcquireRequestState事件中不可用的会话状态
EN

Stack Overflow用户
提问于 2015-04-26 08:32:12
回答 1查看 2K关注 0票数 4

我有一个ASP.NET MVC应用程序,它具有每个用户的设置,包括当前的区域性设置。我们应该在Thread.CurrentThread.CurrentCultureApplication_AcquireRequestStateApplication_PostAcquireRequestState事件中设置HttpApplication

我希望在会话状态字典中维护用户的设置,但是在我的Application_AcquireRequestState方法中我观察到:

  1. HttpContext.Current.Session == null
  2. QuickWatch窗口报告this.Session((System.Web.HttpApplication)(this)).Session'抛出了一个类型为'System.Web.HttpException' System.Web.SessionState.HttpSessionState {System.Web.HttpException}的异常“会话状态在此上下文中不可用”。

有趣的是,HttpContext.Current._sessionStateModule == null是真的,尽管我的web.config文件中有<sessionState mode="InProc" />

为什么会话不可用?

EN

回答 1

Stack Overflow用户

发布于 2015-09-25 15:57:04

我只是遇到了这个问题,并设法解决了一些研究。希望这能帮上忙。

我不太清楚你在<sessionState mode="InProc" /> in web.config you的那一部分。

在我的例子中,我需要检查我的Session["Language"]Application_AcquireRequestState中是否为null。如果不是,那就做些代码吧。当我运行我的程序时,Application_AcquireRequestState是代码首先要用到的地方。此时,会话绝对是空的。因此,如果您正在编写任何会话,并且断点跨过它,它肯定会碰到错误。

根据周期,在运行程序时,Application_AcquireRequestState中的会话状态还没有准备好。

稍后,在执行了第一个页面并设置了会话值之后,将再次调用Application_AcquireRequestState,这一次我已经设置了会话。这样错误就不会再次出现了。

为了解决这个问题,我有以下完整的代码:

代码语言:javascript
运行
复制
try 
{
    if (System.Web.HttpContext.Current.Session != null)
    {
        if (System.Web.HttpContext.Current.Session["Language"] != null)
        {
            lang = System.Web.HttpContext.Current.Session["Language"].ToString();
        }
        else
        {
            lang = "EN";
        }
    }
    else
    {
        lang = "EN";
    }
}
catch 
{
    lang = "EN";
}

对于上面的代码,我的默认语言是EN,不管会话状态是否就绪。即使代码在try块中碰到任何会话状态错误,我最后的lang值总是"EN“。我知道这是处理代码的一种非常糟糕的方法,但对于我的情况,我可以避免会话状态错误,并确保lang变量始终可以返回一个值。

希望这能帮上忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29875424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档