【问题标题】:Accessing DOM from application_error从 application_error 访问 DOM
【发布时间】:2014-07-29 18:36:39
【问题描述】:

我有一个针对 asp.net 站点的自定义错误处理程序。

void Application_Error(object sender, EventArgs e)
{
    // Code that runs when an unhandled error occurs
    //if (System.Configuration.ConfigurationManager.AppSettings["ProductionMode"] == "Yes")
    #if (!DEBUG)
    Server.Transfer("~\\GlobalExceptionHandler.aspx");
    #endif
}

在检索异常信息时它工作得很好而且很花哨,因为它只会抓住 Server.getLastException() 并将其通过电子邮件发送给我以供审查

但是,我在页面上有一些文本框,我想将这些文本框的值与电子邮件一起发送。也许这不是我要访问的 DOM,而是那些已发布的变量。

我尝试查看HttpContext.Current.Request.Form,但没有显示任何键。

那么有谁知道在全局捕获异常时如何访问表单值?

【问题讨论】:

    标签: c# asp.net application-error


    【解决方案1】:

    访问表单值

    要访问Global.Application_Error 中的表单值,您只需使用HttpContext.Current.Request.Form

    这是一个概念证明,页面立即在 post(back) 上引发异常以命中应用程序错误处理程序:

    void Application_Error(object sender, EventArgs e)
    {
        var test = HttpContext.Current.Request.Form;
    }
    

    在赋值上设置断点到test,然后在命中的时候越过它(用F10),可以看到test确实设置为post(back)的表单值集合。

    访问回发控制值

    或者,您可以通过在回发时将回发控件值添加到会话中来访问回发控件值,例如...

    // ************code behind
    protected void TextBox1_TextChanged(object sender, EventArgs e)
    {
        Session["TextBox1"] = TextBox1.Text;
    }
    

    ...,并在应用程序错误处理程序中访问会话 - 例如:

    // ************Global.asax.cs
    protected void Application_Error(object sender, EventArgs e)
    {
        // Use Session["TextBox1"].
    }
    

    CodeVerge thread 说得很好——尤其是 Benson Yu 的回复。

    【讨论】:

    • 如前所述,我已经尝试使用 Request 变量,但 Form 变空了。我尝试将表单保存在 Session 中(我将所有键/值解析为字符串)Variable 但是当我尝试访问 Session 时它抛出了 HTTP 异常
    • @Cheruvian:room to screw upGlobal.asax.cs 中检查请求的表单值集合:所以请仔细检查您实际上是否正确执行了此操作。话虽如此,请务必编辑您的问题,以解释您如何尝试将控制值添加到会话并使用Application_Error 中的会话以及导致的异常。这些细节会显着影响您提出的问题:因此,您的问题必须包含它们。
    猜你喜欢
    • 2016-03-21
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 2021-11-03
    • 2020-07-25
    相关资源
    最近更新 更多