Skip to main content
 首页 » 编程设计

c#之Web应用中, "ressource cannot be found"异常时当前session为null

2024年02月23日29zhoujg

在我的 ASP.NET 应用程序中,我有一个将所有异常记录到文件的过程(使用 Application_Error() 和 global.asax)。在该过程中,我记录了几项内容,例如当前日期时间、用户名等。

它运行良好,但是,如果某人(已经登录)尝试访问不存在的页面(例如:http://www.mywebsite.com/foo.aspx),则无法从过程访问当前用户名信息,因为 System. Web.HttpContext.Current.Session 为空。起初,我以为 session 已经丢失。这不是真的,因为如果我按回键我仍然可以使用该网站(链接仍然有效而无需重定向到登录页面)。

如果找不到资源,session 为空的原因是什么? 是因为 session 对象只有在他知道要传递哪个页面后才由 asp 初始化吗?还是我网站上的某些配置不正确?

请您参考如下方法:

看一下 ASP.NET 事件生命周期:

http://msdn.microsoft.com/en-us/library/bb470252.aspx

特别是 HttpApplication 如何处理您的请求。请注意,在 BeginRequest(第 3 项)和 AcquireRequestState(第 12 项)之前,至少有几个重要事件。

现在,您的 session 仅在 AcquireRequestState 之后可用。如果您在之前的事件之一中有任何错误,您将在 Session 上获得空引用。

“未找到资源”只是一个示例,但通常您必须做好准备,即 Session 在处理管道的早期事件中不可用。