从application_error访问DOM

时间:2014-07-29 18:36:39

标签: c# asp.net application-error

我有一个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()并通过电子邮件发送给我进行审核

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

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

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

1 个答案:

答案 0 :(得分:2)

访问表单值

要访问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)的form-values集合。

访问回发控制值

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

// ************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的回复。