2016-08-11 63 views
0

我已經嘗試了很多方法,但仍然無法完成。 只是在請求無效時顯示404/500。MVC簡單錯誤處理BadRequest

例如,沒有用戶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); 
    } 

與webconfig的System.Web中

<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

檢查是否是因爲web.config中的http://計算器。 com/questions/4483849/default-redirect-for-error-404 –

回答

1

可以使用

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

return HttpNotFound(); 

或返回錯誤觀點的形式共享文件夾

return View("NotFound"); 
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); 
    } 
0

只要將/返回HTTP例外這樣的:

throw new HttpException(404, "Some description");

return new HttpNotFoundResult("optional description"); ASP.NET MVC 3及更高版本。

return HttpNotFound("I did not find message goes here");適用於MVC 4及以上版本。

+0

我喜歡你展示的代碼,但結果是一樣的,白色的空白窗口和c找不到鞋墊printe 404。我在想,我的配置一定是錯的。但我不知道在哪裏。 –

+0

@ EricK.Watch第二個答案http://stackoverflow.com/questions/553922/custom-asp-net-mvc-404-error-page – Raskayu