asp.net – 如何在抛出请求验证异常时显示自定义错误页面?
我们为ASP.NET引发的异常配置了我们的自定义错误页面:
<customErrors mode="On" redirectMode="ResponseRewrite"> <error statusCode="400" redirect="~/400.aspx"/> <error statusCode="404" redirect="~/404.aspx"/> <error statusCode="500" redirect="~/500.aspx"/> </customErrors> 设置redirectMode =“ResponseRewrite”是重要的,因为它确保URL不会更改(我相信ASP.NET执行一个Server.Transfer而不是Response.Redirect). 不幸的是,这不适用于请求验证错误.例如,如果我导航到/ some / page /< script>,则启用了自定义错误. ASP.NET的请求验证启动并引发HttpException.但是,除了显示我的自定义错误页面,我会收到以下消息:
为什么在这种情况下ASP.NET无法显示我的自定义错误页面?错误页面中没有代码,只是HTML,所以我知道错误页面本身没有抛出任何异常. 此外,如果我在Application_Error中自己捕获错误,并发出一个Server.Transfer它工作正常,所以我很好奇ASP.NET正在做的封面下. 如果我们自己处理这个问题,有没有比这更好的解决方案? protected void Application_Error(object sender,EventArgs e) { var ex = Server.GetLastError() as HttpException; if (ex != null && ex.Message.StartsWith("A potentially dangerous Request.Path value was detected from the client") && HttpContext.Current.IsCustomErrorEnabled) { Server.Transfer("400.aspx"); } } 解决方法
为了确保您不会遗漏任何可能发生在您的webapp的错误代码,您可以添加默认错误页面:
<customErrors mode="On" defaultRedirect="Error.aspx" /> 如果你只想捕获RequestValidationErrors,你可以在global.asax文件中处理它: void Application_Error(object sender,EventArgs e) { Exception ex = Server.GetLastError(); if (ex is HttpRequestValidationException) { Server.ClearError(); Response.Redirect("RequestValidationError.aspx",false); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 将ASP.NET MVC4应用程序部署到GoDaddy编译器问题
- asp.net-mvc – ASP.NET MVC如何指定View页面驻留在哪个文件
- asp.net-mvc – 为什么Razor会添加另一个值属性以及如何删除
- ASP.NET网站上的XSS攻击
- asp.net – SQL Server预登录握手确认错误
- asp.net-mvc-3 – ASP.NET MVC3中的“返回类型”
- ASP.NET Web API内存中测试中的内部服务器错误
- asp.net – 和debug =“false”有什么区别?
- asp.net-mvc-4 – 在MVC4中捕获404错误
- ASP.NET GridView利用PagerTemplate自定义分页
- asp.net-mvc-3 – 在Razor / MVC3中使用@ Html.A
- asp.net-mvc-4 – 在MVC中的App_Start()文件夹中
- 如何从Asp.Net Code Behind调用JavaScript函数?
- asp.net-web-api – Ninject 3 – BeginBlock()是
- [ASP NET MVC] 表单 Partial View / Editor Temp
- Response.Flush不工作ASP.NET
- Phonegap上的ASP.NET窗体身份验证问题(Android)
- asp.net-mvc – 在MVC 4中获取表头名称的最佳方法
- 四种为HttpClient添加默认请求报头的解决方案
- asp.net-mvc – ASP.NET MVC – 出错时的声明性重