我有一个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?
答案 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的回复。