我尝试了很多方法,但仍未能成功。 只是想在请求无效时显示404/500。
EG。没有用户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错误。但我希望它能在页面上显示。
有人可以指出我的错误。感谢
答案 0 :(得分:2)
你可以使用
throw new HttpException(404, "HTTP/1.1 404 Not Found");
或
return HttpNotFound();
或返回错误视图表单共享文件夹
return View("NotFound");
答案 1 :(得分:0)
你可以添加
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);
}
答案 2 :(得分:0)
只需抛出/返回这样的HTTP异常:
throw new HttpException(404, "Some description");
。
或return new HttpNotFoundResult("optional description");
。
或return HttpNotFound("I did not find message goes here");
适用于MVC 4及以上版本。