1

AdminError.aspxページとError.aspxページがあり、例外が発生したときにAdminError.aspxを表示したいと思います。両方のファイルが必要です。

なぜこれが機能しないのですか?

<customErrors mode="On" redirectMode="ResponseRedirect" defaultRedirect="AdminError.aspx" />

代わりに、Error.aspxが常に表示されます。

私に何ができる?

4

2 に答える 2

1

Asp.net mvc には、この種の要件を処理するための [HandleError] 属性が用意されています。特定のエラー タイプに基づいてリダイレクトする別のエラー ページ (ビュー) を指定できます。これは非常に柔軟であり、そのようにすることをお勧めします。

例えば

[HandleError(ExceptionType = typeof(NullReferenceException),
     View = "NullError")]
[HandleError(ExceptionType = typeof(SecurityException),
     View = "SecurityError")]
public class HomeController : Controller
{
    public ActionResult Index()
    {
        throw new NullReferenceException();
    }

    public ActionResult About()
    {
        return View();
    }
}

詳細については、この同様の質問を参照してください。

于 2009-11-23T21:52:07.967 に答える
1

ありがとう、

私は解決策を見つけたと思います。

私は HandleErrorWithELMAHAttribute ( How to get ELMAH to work with ASP.NET MVC [HandleError] attribute? ) を使用しており、OnException メソッドでビューを設定しました:

public override void OnException(ExceptionContext context)
{
   View = "AdminError"; // this is my view
   base.OnException(context);

   var e = context.Exception;
   if (!context.ExceptionHandled   // if unhandled, will be logged anyhow
       || RaiseErrorSignal(e)      // prefer signaling, if possible
       || IsFiltered(context))     // filtered?
   return;

   LogException(e);
}

customErrorsタグのredirectModeおよびdefaultRedirect属性の有無にかかわらず機能することに気付きました。

于 2009-11-23T22:10:04.730 に答える