0

私はMVC4を使用していますが、オントロラーからHttpExceptionsをスローし、別のコントローラーでそれらを処理できるようにしたいと考えています。

私はこれを設定し<customErrors mode="On" defaultRedirect="/Error"/>ました。これは機能しますが、私のコントローラーで例外にアクセスできるようにしたいと思います。

できれば、2つのモードが必要です。

  1. HttpExceptionのインスタンスを処理して、コントローラーからHttpExceptionをスローし、それに応じて処理できるようにします

  2. 他のすべてのエラーを処理します。

最初の場合は、ユーザーエージェントに適切なステータスコードと、場合によってはビューを提示したいと思います。2番目の場合は、ユーザーエージェントにステータス500を表示し、オプションのメッセージを含むデフォルトのビューを表示します。

このためには、例外データにアクセスする必要があると思います。少なくとも、これを行うための他の適切な方法は考えられません。

これを設定する適切な方法は何ですか?MVCでのエラー処理については、他にもたくさんの質問があることは知っていますが、これらの質問に答えている人はいないようです。

4

1 に答える 1

1
 but in my controller I would like to be able to access the exception.

Server.GetLastErrorを試しましたか:

Exception ex = Server.GetLastError();

Server.GetLastError() - global.asax の Application_Error で使用する必要があります。その場合、ここで説明されているように最後のエラーを処理できますが、削除する必要があります。

filters.Add(new HandleErrorAttribute());

FilterConfig.cs で

詳細については、次を参照してください。

customerrors = "On" の場合に Application_Error が起動しない

ASP.NET カスタム エラー ページ - Server.GetLastError() が null です

http://www.secretgeek.net/custom_errors_mvc.asp

http://devstuffs.wordpress.com/2010/12/12/how-to-use-customerrors-in-asp-net-mvc-2/

于 2012-10-30T13:00:08.523 に答える