【问题标题】:System.Web.HttpException was unhandled by user codeSystem.Web.HttpException 未被用户代码处理
【发布时间】:2011-03-09 06:04:38
【问题描述】:

我一直在用

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: 

我无法追踪原因

谁能帮帮我

提前致谢

【问题讨论】:

  • "登录应用程序" 怎么样?您是否碰巧使用了未实现IRequiresSessionStateIHttpHandler

标签: c# asp.net


【解决方案1】:

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

第二个问题是GetLastError 可能返回一个不是HttpException 的异常。在这种情况下, 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" );

【讨论】:

    【解决方案2】:

    在访问值之前首先检查 Session 是否不为空。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多