gpt4 book ai didi

asp.net - 处理请求验证 'silently'

转载 作者:行者123 更新时间:2023-12-01 00:08:02 25 4
gpt4 key购买 nike

我正在尝试覆盖 web 表单的 onError 事件处理程序,以允许在表单内处理“从客户端检测到潜在危险的 Request.Form 值”类型的错误,而不是在应用程序级别的错误处理程序中结束。

我找到了一些这样的示例代码:

   protected override void OnError(EventArgs e)
{
// At this point we have information about the error
HttpContext ctx = HttpContext.Current;

Exception exception = ctx.Server.GetLastError();

string errorInfo =
"<br>Offending URL: " + ctx.Request.Url.ToString() +
"<br>Source: " + exception.Source +
"<br>Message: " + exception.Message +
"<br>Stack trace: " + exception.StackTrace;

ctx.Response.Write(errorInfo);

// --------------------------------------------------
// To let the page finish running we clear the error
// --------------------------------------------------
ctx.Server.ClearError();

base.OnError(e);

}

哪个令人满意地捕获错误并将错误消息写到屏幕上,但我真正想做的是在 Page_Load 触发时意识到错误,因此能够在网络表单上显示“正常”错误消息。

我确信有一个很好的方法可以做到这一点,但我不知道!建议?

(顺便说一句,由于各种原因,我不想关闭表单或应用程序级别的检查,我也不希望依赖 Javascript - 谢谢)

最佳答案

您实际上可以在页面级别捕获错误,但它会杀死页面生命周期。所以你必须使用一个技巧来解决它。例子:

public override void ProcessRequest(HttpContext context)
{
try
{
base.ProcessRequest(context);
}
catch(HttpRequestValidationException ex)
{
context.Response.Redirect("HandleValidationError.aspx");
}
}

HandleValidationError.aspx 可以是任何东西,包括重定向回同一页面(可能带有有关错误信息的查询字符串,例如“ContactForm.aspx?error=Invalid+Request”)

关于asp.net - 处理请求验证 'silently',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/502112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com