3

私はVS2010でMVC 3を使用しており、[HandleError]を機能させようとしています。次のように、コントローラーでクラッシュをシミュレートするテストを作成しました。

[HandleError]
public ActionResult Crash()
{
    throw new ApplicationException();
}

また、web.configに入り、次を追加しました:

<customErrors mode="on" />

Chrome から実行すると、MVC は Shared/Error.aspx でビューを返すため、これは問題なく動作します。

IE 8 から実行すると、分かりやすいエラー ページが表示されます (「Web サイトはページを表示できません。最も可能性の高い原因: ... 試してみることができます...」)。IE Tools に移動し、[わかりやすい HTTP エラー メッセージを表示する] をオフにして再度実行すると、IE に Error.aspx ビューが表示されます。明らかに、ユーザーにこの設定を変更させることはできませんが、少なくとも Error.aspx が返されていることはわかっています。

そこで、Fiddler を実行し、ブラウザを Crash メソッドに移動させると、MVC が Error.aspx ビューを返しているにもかかわらず、結果として 500 が返されていることがわかります。これにより、IE はエラーがあると判断し、私のページをフレンドリーなページで上書きします。

MVC は、500 ではなく、Error.aspx ページで Result 200 を返す必要があると思います。

4

1 に答える 1

8

エラー ページを 512 バイト以上にすると、正常に動作するはずです。 相変わらず、IEは思いやりのない豚です。

于 2011-04-01T10:00:22.310 に答える