我一直在使用
protected void Application_Error(Object sender, EventArgs e)
{
HttpException ex = Server.GetLastError() as HttpException;
Exception ex_T = ex;
Session["Ex"] = ex;
Session["Ex_T"] = ex_T;
Response.Redirect("~/errorPage.aspx" );
}
异常处理功能。
这时我登录应用程序“sometime”
发生异常,详细信息为
System.Web.HttpException was unhandled by user code
Message="Session state is not available in this context."
Source="System.Web"
ErrorCode=-2147467259
StackTrace:
at System.Web.HttpApplication.get_Session()
at Tools.Global.Application_Error(Object sender, EventArgs e) in C:\Myproject\Tools\Global.asax.cs:line 67
at System.EventHandler.Invoke(Object sender, EventArgs e)
at System.Web.HttpApplication.RaiseOnError()
InnerException:
我无法追踪原因
任何人都可以帮助我
提前致谢
答案 0 :(得分:3)
我在这里可以看到2个问题。第一个是错误发生在会话之外或创建会话之前。从堆栈跟踪中可以看出,会话未初始化或已退出。无法启动会话,也不应在Application_Error中访问。
第二个问题是GetLastError可能返回一个不是HttpException的异常。在这种情况下,ex被赋值为null。 ex_t也从ex。
指定为nullException ex = Server.GetLastError();
if (ex != null)
{
HttpException hex = ex;
if (hex != null)
Session["Ex"] = hex; // try to do something else instead of accessing session
}
Session["Ex_T"] = ex; // try to do something else instead of accessing session
Response.Redirect("~/errorPage.aspx" );
答案 1 :(得分:0)
在访问值之前,首先检查Session是否为空。
其次,GetLastError可能会返回不是HttpException的异常。首先尝试查看是否(ex是HttpException)然后将其分配给另一个HttpException变量。