asp.net - Application_AcquireRequestState 中的 Context.Session 对象为 null

标签 asp.net iis-7 iis-6

我将我的网站从 .NET 1.1 升级到 .NET 4.0。在我的 Global.asax.vb文件我试图访问 Context.Session Application_AcquireRequestState 中的对象
方法,当我第一次尝试访问该网站时出现空引用异常。

我使用 IIS 7.5 在不同的测试服务器上安装了 .NET 4.0 版本的网站,一切似乎都正常。但是当我在使用 IIS 6 的原始服务器上安装 .NET 4.0 版本的网站时,我收到了异常。

知道为什么我会收到此异常吗?不同版本的 IIS 是否以不同方式处理 HTTP 管道事件?或者与我正在使用的两个 .NET 版本之间的 Session 对象何时可用有区别吗?

任何帮助将不胜感激,谢谢!!

最佳答案

您应该使用 Application_PreRequestHandlerExecute而不是 Application_AcquireRequestState
我刚刚解决了同样的问题,但对于 c#,翻译代码必须是这样的:

Private Sub Application_PreRequestHandlerExecute(sender As Object, e As EventArgs)
If TypeOf Context.Handler Is IRequiresSessionState OrElse TypeOf Context.Handler Is IReadOnlySessionState Then
    ' HttpContext.Current.Session should be available
End If
End Sub

关于asp.net - Application_AcquireRequestState 中的 Context.Session 对象为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10195791/

相关文章:

c# - MVC 应用程序可以在 Visual Studio 中运行,但不能在 IIS7 中运行

asp.net - AjaxControlToolkit TabContainer 具有奇怪的渲染行为

asp.net-mvc - 无法加载文件或程序集“System.Web.WebPages.Razor、Version=2.0.0.0、Culture=neutral”或其依赖项之一

iis-6 - DOS命令列出IIS 6中的所有虚拟目录

http - 未在默认网站下创建 MSMQ 虚拟目录

asp.net - 我可以在 IIS6 上部署 .net 4.0 Web 应用程序吗?

.net - 根据值测试绑定(bind)下拉列表中是否存在项目

asp.net - 测量 Web 请求和响应的大小

c# - 哪些选项是发布 asp.net 网站项目的最佳性能方式 - 部署

c# - 如何选择已在 Microsoft Unity 注册的类型的实现