繁体   English   中英

用户代码未处理System.Web.HttpException

[英]System.Web.HttpException was unhandled by user code

我一直在用

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" );
}

异常处理功能。

在这里,当我“有时”登录到应用程序时

发生异常,其详细信息为

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: 

我无法追踪原因

谁能帮我吗

提前致谢

我在这里看到2个问题。 首先是该错误发生在会话外部或创建会话之前。 从堆栈跟踪中可以看到,会话尚未初始化或已经退出。 会话无法启动,因此不应在Application_Error中访问。

第二个问题是GetLastError可能返回不是HttpException的Exception。 在这种情况下,会将ex分配为null。 ex_t也从ex分配为null。

Exception 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" );

在访问值之前,请先检查Session是否不为null。

其次,GetLastError可能返回不是HttpException的异常。 首先尝试查看(如果是HttpException),然后将其分配给另一个HttpException变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM