在调查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为null。

怎么会这样?

最佳答案

那时HttpContext.Current.Session可能为空。该事件在获取会话的时间点触发,无法保证在这一点上已经获取了该事件。您可能会钩住此事件的一个原因是,您正在提供一个自定义模块来实现自己的Session对象。这样的定制模块将在此处设置会话。

如果要使用Session对象,则应使用PostAquireRequestState事件。

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

10-09 18:20