尽管有 IRequireSessionState/IReadOnlySessionState 处理程序,但 ASP.NET session 为 NULL?

标签 asp.net session

在调查 another problem 时我遇到了一个特殊的情况。

在 Global.asax 方法中,我有以下代码:

protected void Application_AcquireRequestState(object sender, EventArgs e)
{
    if (!(Context.Handler is IRequiresSessionState || Context.Handler is IReadOnlySessionState)) // No session - no validation.
        return;
    DoSomething();
}
DoSomething()方法调用抛出 NullReferenceException它很简单,它唯一能做到的地方就是 HttpContext.Current.Session为空。

怎么会这样?

最佳答案

那时HttpContext.Current.Session很可能是空的。事件在 session 为 的位置触发正在 aquired 无法保证此时它具有 获得。您可能会 Hook 此事件的一个原因是您提供了一个自定义模块来实现您自己的 Session 对象。这样的自定义模块将在这里设置 session 。

如果你想使用 Session 对象,你应该使用 PostAquireRequestState事件。

关于尽管有 IRequireSessionState/IReadOnlySessionState 处理程序,但 ASP.NET session 为 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1588299/

相关文章:

c# - 使用 WinNT 连接到远程计算机 ://provider and Directory Services Ignores username/password

php - Codeigniter 和 SQLite - 将 session 保存到数据库不起作用(ci_session)

c# - Java servlet 中的 session 对象、cookie 与 ASP .NET

asp.net - 使用 itextsharp 将印地语 unicode 字体转换为 pdf

c# - 类、结构或接口(interface)成员声明中的无效 token 'String'

javascript - 如何将用户输入从 ASP.NET TextBox 传递到 JavaScript 函数?

java - 为什么在 Tomcat 7 中重新部署应用程序时我的 session 会消失?

php - CodeIgniter 2.1.0 session 问题

node.js - 如何在没有框架的情况下处理 node.js 中的 session

c# - 如何在 ASP.NET 中跨多个 session 存储(缓存?)数据