1

RegisterGlobalFiltersとHandleErrorAttributeに永遠に苦労した後、私は必要最低限​​に戻ることにしました。テンプレートを使用して、VS10で新しいMVC3プロジェクトを作成しました。About-actionにthrowDivideByZeroExceptionを追加し、開発サーバーを起動しました。黄色の画面が表示されないことが期待されます。

しかし、私はやりました。

なぜこれがうまくいかないのですか?

アップデート

archilとAdamTuliperの提案はうまくいきました。エラービューが呼び出されました。

次に、これをRegisterGlobalFiltersに追加します。

filters.Add(new HandleErrorAttribute { ExceptionType = typeof(DivideByZeroException), View = "DivideByZeroException", Order = 1 });
filters.Add(new HandleErrorAttribute { View = "AllOtherExceptions", Order = 2 });

AllOtherExceptionsビューが呼び出されました。なぜDivideByZeroExceptionビューではないのですか?

フォローアップの質問はここに投稿されています。

4

2 に答える 2

6

HandleErrorAttributeは、次の条件が満たされた場合に機能します

  • CustomErrorsはWeb構成で有効になっています
  • 例外がHttpExceptionの場合、そのエラーコードは500です。

2番目の条件が満たされている場合と同様に、カスタムエラーがオンになっていることを確認します

<system.web>
     <customErrors mode="On"></customErrors>
</system.web>
于 2012-01-19T15:09:56.673 に答える
2

web.configでカスタムエラーがオンになっていますか?オンにしない場合は、動作するはずです。

于 2012-01-19T15:08:18.843 に答える