11

コントローラー アクションで [HandleError] 属性を使用する際に問題が発生しています - まったく機能していないようです (つまり、フィルターが存在するかどうかは問題ではありません - 同じ結果が得られます...)。例外がスローされると、カスタム ビューではなく、「/」アプリケーション エラー ページに標準の赤い色調のサーバー エラーが表示されます。

SO でこの件に関する他のスレッドをいくつか見つけました。ほとんどの場合、web.config で customErrors オプションを On に設定すると問題が解決したようです。私には向いていないので、別の解決策を見つける必要があります。

私のコントローラーアクション:

[HandleError]
public ActionResult Index()
{
    throw new Exception("oops...");
    return View();
}

私のweb.configファイルで

<customErrors mode="On"></customErrors>

Error.aspx ファイルも Shared ディレクトリにあることを確認しました。私は何が欠けていますか?

ASP.NET MVC RC Refresh を実行しています。

4

6 に答える 6

4

リダイレクト先のページも指定する必要があります。

<customErrors mode="On" defaultRedirect="Error.aspx" />

編集:申し訳ありませんが、/ Shared /の部分はそこに賭けるべきではありませんが、Error.aspxを使用してユーザーを送信するページをMVCに指示する必要があります。次に、デフォルトルートは共有でError.aspxと呼ばれるものを探します。

とても遅かったです!:)だから誰かが私に答えにマイナスをくれたのだと思います!:)少なくともそれはここで動作しますメイト!

于 2009-02-08T02:27:55.613 に答える
0

上記の提案を試しましたが、何もうまくいきませんでした。トリックは、エラーコントローラー内のアクションからこの行を削除することでした。

Response.StatusCode = (int)HttpStatusCode.NotFound;

IIS エラー メッセージが私のエラー処理を傍受し続けたので、私は頭を悩ませていました。応答でそのステータス コードを提供したいので理想的ではありませんが、それを削除すると、IIS 7+ がエラー処理に干渉しなくなることがわかりました。

ダトライブ

于 2011-07-11T07:32:57.720 に答える
0

この問題の別の理由として考えられるのは、

テンプレート MVC アプリケーション (VS2008 / VS2008 Express で生成) では、Error.aspx (VS で生成) はマスター ページを使用します。

マスター ページが ViewData にアクセスすると、null 参照 Exception がスローされ、error.aspx は表示されません。

この単純なコードを Error.aspx として使用すると、問題が解決されます ( CustomErrors=On と共に)

<%@ Page Language="C#"  Inherits="System.Web.Mvc.ViewPage<System.Web.Mvc.HandleErrorInfo>" %>
<%= Model.Exception.Message %>
于 2009-07-27T14:26:34.183 に答える
0

Error.aspx が表示されるはずだったときに 404 問題を回避するには、(mvc 2 フレームワークの周りで) ビューに直接アクセスできないようにする httpHandler セクションから Error.aspx を除外する必要がありました。これを行うには、Error.aspx を「Error」サブフォルダーに配置し、このサブフォルダーに web.config を <remove path="*" verb="*" /> 配置して、httpHandlers セクションに配置しました。この問題 (およびその解決策) の私のバージョンは、MVC 2 に固有のものである可能性があります。

Error.aspx を移動するときは、defaultRedirect 参照を忘れずに更新してください :)

于 2010-09-29T09:29:35.303 に答える