2

例外処理に「 HandleError」アクション フィルターを使用している MVC 3 Web アプリがあります。このアクション フィルターを次のように実装しました。

[HandleError]
public class BaseController : Controller {...}

これは、すべてのコントローラーの派生元となる基本クラスです。私のweb.configではそして、共有フォルダーにError.cshtmlがあります (Razor を使用しているため、.cshtml)。すべてが正常に機能しており、適切な例外処理が得られます (関数によってフォーマットされています)

最近、どういうわけか「未処理の例外 (YSOD)」が発生し、「customErrors」が原因で、実際の例外に関する情報がないデフォルトの ASP.Net エラー メッセージが表示されました。これは、AJAX ポストバックで発生しました。しかし、私はそれを再現することができません。

このアクション フィルターを回避するエラーはありますか?

4

1 に答える 1

4

このアクション フィルターを回避するエラーはありますか?

HandleErrorfilter は、アプリケーションで発生したすべての例外をキャッチするわけではありません。アクション、アクション フィルター内で発生した例外をキャプチャできます。単に MVC コンテキスト内で発生します。HTTPまた、ステータス コードが 500 以外の例外もキャプチャしませんHandleError。MVC アプリケーションでフィルタだけに頼るのはお勧めできません。

でキャプチャされない例外のカスタム エラー ページを表示するには、Application_Errorイベントに依存してログを記録し、セクションを表示する必要があります。customErrorsHandleError

このテーマについて、役立つかもしれないブログ記事を書きました。

于 2012-08-30T11:56:55.613 に答える