Goh*_*har 1 asp.net-mvc asp.net-mvc-routing http-status-code-400 asp.net-mvc-4
我有一个ASP.NET MVC 4应用程序,我想将所有HTTP 400错误重定向到我的自定义错误页面.虽然HTTP 400错误没有像404错误那样处理,但我正在寻找一个小时来找到解决方案.有许多解决方案显示如何转义400(错误的请求错误),即允许在url中使用特殊字符.但我无法找到一些解决方案来捕获异常.
请帮助我以某种方式捕获所有HTTP错误请求并将它们重定向到我的错误页面.
切勿在发生错误时重定向用户,而是返回失败请求的响应正文.我相信IIS(和ASP.NET)重定向到错误页面的功能从根本上是错误的,不正确的,并且违反了HTTP规范(因为那时错误页面资源本身会返回错误,而不是原始请求如果它是一个Web浏览器,则用户无法重试,因为重新加载页面将再次返回错误页面,而不是重试原始的失败请求,这是他们想要的.
无论如何...
必须由应用程序代码生成HTTP 400响应,而不是自动完成的操作.在通知非人工代理(即Web服务客户端,而不是Web浏览器)其HTTP请求缺少所需值或格式错误时,通常会使用错误请求.
您可以在MVC中通过为所有控制器提供基本控制器类来执行此操作,如下所示:
public abstract class BaseController : Controller {
protected ActionResult Http400(String message) {
Response.StatusCode = 400;
return View(message); // you need to define a view file called "Http400.aspx" (or cshtml if you're using Razor) in your application's shared views folder
}
}
Run Code Online (Sandbox Code Playgroud)
在您的应用程序逻辑中:
public ActionResult Foobar() {
if( IsBadRequest() ) return Http400("Bad request, try again");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5988 次 |
| 最近记录: |