Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在web应用程序中,当前会话在以下情况下为空;“找不到资源”;发生异常_C#_Asp.net_Web - Fatal编程技术网

C# 在web应用程序中,当前会话在以下情况下为空;“找不到资源”;发生异常

C# 在web应用程序中,当前会话在以下情况下为空;“找不到资源”;发生异常,c#,asp.net,web,C#,Asp.net,Web,在我的ASP.NET应用程序中,我有一个记录文件所有异常的过程(使用application\u Error()和global.asax)。在该过程中,我记录了一些内容,如当前日期时间、用户名等 但是,如果有人(已经登录)尝试访问不存在的页面(例如:),则无法从过程中访问当前用户名信息,因为System.Web.HttpContext.current.Session为空。一开始,我认为会议已经失败了。这不是真的,因为如果我按back,我仍然可以使用该网站(链接仍然有效,而不会重定向到登录页面) 如

在我的ASP.NET应用程序中,我有一个记录文件所有异常的过程(使用
application\u Error()
global.asax
)。在该过程中,我记录了一些内容,如当前日期时间、用户名等

但是,如果有人(已经登录)尝试访问不存在的页面(例如:),则无法从过程中访问当前用户名信息,因为
System.Web.HttpContext.current.Session
为空。一开始,我认为会议已经失败了。这不是真的,因为如果我按back,我仍然可以使用该网站(链接仍然有效,而不会重定向到登录页面)


如果找不到ressource,会话为空的原因是什么?是因为只有asp知道要传递哪个页面后,会话对象才被初始化吗?或者我的网站上的某些配置不正确?

会话属于
HttpContext
,如果没有页面,则不会创建
HttpContext


如果必须为所有日志条目提供会话id,则可能需要创建自定义404页面并在其中登录。

会话属于
HttpContext
,如果没有页面,则不会创建
HttpContext


如果必须为所有日志条目提供会话id,则可能需要创建自定义404页面并在其中登录。

如果应用程序抛出类似HTTP 404(未找到文件)的错误,则会话始终为空。原因是HttpContext对象是由ASP.NET在页面请求期间创建的。由于未找到页面,因此无法创建HttpContext对象;因此,当404错误发生时,不可能存在会话

检查以下asp.net线程以了解类似的问题和解决方案


如果应用程序抛出类似HTTP 404(未找到文件)的错误,则会话始终为空。原因是HttpContext对象是由ASP.NET在页面请求期间创建的。由于未找到页面,因此无法创建HttpContext对象;因此,当404错误发生时,不可能存在会话

检查以下asp.net线程以了解类似的问题和解决方案


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

特别是
HttpApplication
如何处理您的请求。请注意,在
开始请求(第3号)和
收单机构请求状态(第12号)之前,至少有一些重要事件

现在,您的会话仅在
收单机构请求状态
之后可用。如果您在先前的事件中有任何错误,您将在会话中得到空引用


“未找到资源”只是一个示例,但一般来说,您必须准备好,在处理管道的早期事件中,
会话不可用。

查看ASP.NET事件生命周期:

特别是
HttpApplication
如何处理您的请求。请注意,在
开始请求(第3号)和
收单机构请求状态(第12号)之前,至少有一些重要事件

现在,您的会话仅在
收单机构请求状态
之后可用。如果您在先前的事件中有任何错误,您将在会话中得到空引用

“未找到资源”只是一个示例,但一般来说,您必须准备好,
会话
在处理管道的早期事件中不可用