14

处理错误的最佳方法是什么,例如

从客户端检测到潜在危险的 Request.Form 值”

在 ASP.NET 中?

我想继续验证,因为我的表单没有正当理由允许 HTML 字符。但是,我不太确定如何以更友好的方式处理此错误。我尝试在 a 中处理它,Page_Error但据我所知,这发生在较低级别的部分,因此该Page_Error函数永远不会触发。

因此,我可能不得不求助于Application_Error在我的Global.asax文件中使用。如果这是处理该错误的唯一方法,是否有专门处理该错误的方法?我不想以相同的方式处理所有应用程序错误。

谢谢

4

3 回答 3

22

你有两个选择:

// Editing your global.asax.cs
public class Global : System.Web.HttpApplication
{
    protected void Application_Error(object sender, EventArgs e)
    {
        Exception lastError = Server.GetLastError();
        if (lastError is HttpRequestValidationException)
        {
            Response.Redirect("~/RequestValidationError.aspx");
        }
    }
}

或者

// Editing your CUser.aspx.cs
public partial class CUser : System.Web.UI.Page
{
    protected override void OnError(EventArgs e)
    {
        Response.Redirect("~/RequestValidationError.aspx");
        Context.ClearError();
    }
}
于 2009-12-11T20:17:58.457 回答
3

您不想在 Global.asax 中添加不必要的包袱。如果您认为这是由虚假数据输入引起的,请处理输入,无论它来自何处:

http://codersbarn.com/post/2008/11/01/ASPNET-Data-Input-Validation.aspx

专注于错误的原因:-)

于 2009-12-11T20:25:41.717 回答
1

您可以Server.GetLastError()在 Application_Error 中使用来获取引发的异常、检查异常并根据需要做出响应(重定向到页面等)

于 2009-12-11T20:13:59.927 回答