3

MVC3でグローバルな未処理の例外ロギングを実装しようとしています。web.configをそのように設定しました。

<customErrors mode="On" defaultRedirect="/error/">
  <error statusCode="500" redirect="/error/http500"/>
  <error statusCode="404" redirect="/error/http404"/>
</customErrors>

コントローラの例外をトリガーすると、期待どおりにエラーページにリダイレクトされます。問題は、Server.GetLastError()Global.asaxで使用する場合、例外は常に

"The view 'Error' or its master was not found or no view engine supports the searched locations. The following locations were searched:\r\n~/Views/deanslist/Error.aspx\r\n~/Views/deanslist/Error.ascx\r\n~/Views/Shared/Error.aspx\r\n~/Views/Shared/Error.ascx\r\n~/Views/deanslist/Error.cshtml\r\n~/Views/deanslist/Error.vbhtml\r\n~/Views/Shared/Error.cshtml\r\n~/Views/Shared/Error.vbhtml"

スローされた実際の例外を提供することを期待していました。私は何が間違っているのですか?

4

1 に答える 1

5

Global.asaxから次の行を削除してみてください。

filters.Add(new HandleErrorAttribute());

このHandleError属性は、リリースモードですべての例外をインターセプトし、ビューのレンダリングを試みError.cshtmlます。このビューを~/Views/Sharedフォルダから削除した可能性があるため、未処理の例外がスローされると、この例外ハンドラは例外をインターセプトし、存在しないビューをレンダリングしようとします。

于 2012-05-06T19:16:26.297 に答える