Asp.net mvc ASP MVC 5筛选器为自定义异常配置子文件夹中的视图

Asp.net mvc ASP MVC 5筛选器为自定义异常配置子文件夹中的视图,asp.net-mvc,asp.net-mvc-5,Asp.net Mvc,Asp.net Mvc 5,我想捕获自定义类型MissingSettingException的异常,并显示自定义错误页面 我正在使用FilterConfig指定要显示的视图: public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new HandleErrorAttribute {

我想捕获自定义类型MissingSettingException的异常,并显示自定义错误页面

我正在使用FilterConfig指定要显示的视图:

public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute
        {
            ExceptionType = typeof(MissingSettingException),
            View = "MissingSetting",
            Order = 2
        });
        filters.Add(new HandleErrorAttribute());
    }
}
如果我将视图文件MissingSetting.cshtml保存在~/Views/Shared中的项目中,那么这是可行的,但是我有多个自定义错误页,并且希望将它们保存在~/Views/error/…的子文件夹中

如果我将MissingSetting.cshtml移动到我的首选位置,我就不知道如何让我的过滤器显示正确的视图。我将得到一个错误页面,说明在处理您的请求时发生异常。此外,在执行第一个异常的自定义错误页时发生另一个异常。请求已被终止。。我试过:

视图=丢失设置未更改 视图=~/Error/MissingSetting 视图=~/Error/MissingSetting.cshtml 视图=~错误/丢失设置 视图=~错误/MissingSetting.cshtml 什么是神奇的词语?

我就是这么做的:

将我的错误视图放入~/views/Shared/errors 将我的筛选器定义更改为使用View=Errors/MissingSetting 我已经搜索得够多了,我的眼睛可能会变得呆滞,但我没有找到任何线索,表明我的错误视图文件夹可以保存在站点根目录中,或者~/views/Shared之外的任何地方。至少它们可以包含在子文件夹中


如果有人想分享,仍然对其他解决方案感到好奇。

神奇的词语是RazorViewEngine。您可以覆盖它以指定在何处查找视图:这是源代码,因此您知道它默认做什么以及如何覆盖: