2016-08-11 16 views
0

私は多くの方法を試しましたが、まだそれを作ることができません。 リクエストが無効な場合に404​​/500を表示したいだけです。MVCシンプルエラーハンドルBadRequest

例: User 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のエラーが表示されます。しかし私はそれをページに表示したい。

誰かが私の間違いを指摘できました。

throw new HttpException(404, "Some description");:ありがとう

+0

チェックを返すことができます:// stackoverflowの。 com/questions/4483849/default-redirect-for-error-404 –

答えて

1

あなたは

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

または

return HttpNotFound(); 

を使用するか、それが原因でweb.configファイルはhttpのだ場合は、エラー表示形式の共有フォルダに

return View("NotFound"); 
0

あなたはちょうどこのようなHTTP例外を返す/スロー

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

を追加することができます。

またはreturn new HttpNotFoundResult("optional description");(ASP.NET MVC 3以上)

またはreturn HttpNotFound("I did not find message goes here");(MVC 4以上)

+0

あなたが表示するコードは気に入っていますが、結果は同じです、白い空白のウィンドウとcオンソールプリント404が見つかりません。私は考えていた、私の設定で何かが間違っている必要があります。しかし、私はどこを知りません。 –

+0

@ EricK.Watch 2番目の回答http://stackoverflow.com/questions/553922/custom-asp-net-mvc-404-error-page – Raskayu

関連する問題