MVC简单错误处理BadRequest

本文关键字:BadRequest 处理 错误 简单 MVC | 更新日期: 2023-09-27 18:01:48

我尝试了很多方法,但还是没能成功。只想在请求无效时显示404/500。

例如。没有用户Id=100,如果有人提出这个请求,它应该返回404。另一方面,如果发生服务器错误,则抛出500。

我希望此行为应用于整个应用程序。

public ActionResult EditUser(int Id)
    {
        var db = new UserDbContext();
        var usr = db.Users.Where(a => a.Id == Id).SingleOrDefault();
        if (usr == null) return new HttpStatusCodeResult(HttpStatusCode.NotFound, "User not found");
        return View(usr);
    }

在system.web 中使用webconfig

<customErrors mode="On"  redirectMode="ResponseRewrite" defaultRedirect="~/General">
  <error statusCode="404" redirect="~/NotFound" />
  <error statusCode="403" redirect="~/BadRequest" />
</customErrors>

以及在system.webserver 中

<httpErrors existingResponse="PassThrough"></httpErrors>

尝试了许多组合方式,无法使其发挥作用。我得到的结果是一个空页面,然后浏览器控制台显示404/500错误。但我希望它能在页面上显示出来。

有人可以指出我的错误。感谢

MVC简单错误处理BadRequest

您可以使用

throw new HttpException(404, "HTTP/1.1 404 Not Found");

return HttpNotFound();

或返回错误视图表单共享文件夹

return View("NotFound");

您可以添加

public ActionResult EditUser(int Id)
    {
        var db = new UserDbContext();
        var usr = db.Users.Where(a => a.Id == Id).SingleOrDefault();
        if (usr == null) return new HttpStatusCodeResult(HttpStatusCode.NotFound, "User not found");
        Response.StatusCode = 400;
        return View(usr);
    }

只抛出/返回HTTP异常,如下所示:

CCD_ 1。

或CCD_ 2用于ASP。NET MVC 3及以上版本。

或适用于MVC 4及以上版本的CCD_ 3。