首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在ASP.NET MVC中使用另一个错误页面来代替Error.aspx?

如何在ASP.NET MVC中使用另一个错误页面来代替Error.aspx?
EN

Stack Overflow用户
提问于 2009-11-24 05:46:17
回答 2查看 421关注 0票数 1

我有AdminError.aspx和Error.aspx页面,我想在出现异常时显示AdminError.aspx。两份文件我都需要。

为什么这个不起作用?

代码语言:javascript
复制
<customErrors mode="On" redirectMode="ResponseRedirect" defaultRedirect="AdminError.aspx" />

相反,始终显示Error.aspx。

我能做什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-24 06:10:05

谢谢,

我想我找到了一个解决方案。

我使用HandleErrorWithELMAHAttribute (How to get ELMAH to work with ASP.NET MVC [HandleError] attribute?),并在OnException方法中设置了我的视图:

代码语言:javascript
复制
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属性。

票数 1
EN

Stack Overflow用户

发布于 2009-11-24 05:52:08

Asp.net mvc提供了HandleError属性来处理这种需求,你可以根据具体的错误类型指定不同的错误页面(视图)来重定向。这是非常灵活的,并推荐这样做。

例如

代码语言:javascript
复制
[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();
    }
}

请查看this similar question以了解更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1786239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档