加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – MVC3 HandleError不显示错误页面

发布时间:2020-12-16 01:43:52 所属栏目:百科 来源:网络整理
导读:我一直在关注HandleError属性的指南: blogs.msdn.com 我这样使用(AccountController): [HandleError(View="ErasErrorPage")] public ActionResult Index() { ViewBag.admins = _accountMapper.GetAdmins(false); ViewBag.members = _accountMapper.GetMemb
我一直在关注HandleError属性的指南:
blogs.msdn.com
我这样使用(AccountController):

[HandleError(View="ErasErrorPage")]
        public ActionResult Index()
        {
            ViewBag.admins = _accountMapper.GetAdmins(false);
            ViewBag.members = _accountMapper.GetMembers(false);
            ViewBag.Countries = _countryMapper.GetCountries();

            return View();
        }

此代码抛出异常,因为_accountMapper.GetAdmins(false)因System.Data.EntityException而失败.

我已将ErasErrorPage视图放在我的共享文件夹中,并添加了< customErrors mode =“On”/>但是ErasErrorPage没有显示出来.当错误发生时我得到的只是一个黄色的死亡屏幕说:

显然,将模式设置为“Off”或“RemoteOnly”并不能解决问题.

任何人都知道为什么这不起作用?

编辑

如果我直接浏览到http://localhost:3527/Account/Index,我会得到正确的ErasErrorPage,但我不希望这样.我希望网站在某处抛出异常时自动重定向到该页面.这可能吗?

EDIT2

我在每个Public ActionResult methodName(){…}方法之前放置了[HandleError(View =“ErasErrorPage”)]属性,我仍然得到黄色死亡屏幕说我需要将模式更改为“关闭“或”RemoteOnly“……

解决方法

确保ErasErrorPage视图本身不会引发异常.以下是我所做的步骤,对我来说效果很好:

>使用默认的Visual Studio向导创建一个新的ASP.NET MVC 3项目
>使用以下内容添加?/ Views / Shared / ErasErrorPage.cshtml:

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <title>ErasErrorPage</title>
</head>
<body>
    <div>
        OOPS
    </div>
</body>
</html>

>将HomeContoller修改为如下所示:

public class HomeController : Controller
{
    [HandleError(View = "ErasErrorPage")]
    public ActionResult Index()
    {
        throw new Exception("oops");
    }
}

>在web.config中输入:

<customErrors mode="On" />

>导航到/ Home / Index =>自定义错误页面按预期显示

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读