c# - 如何更改 ExceptionContext 自定义属性的重定向 View ?

标签 c# asp.net-mvc

我有一个自定义属性,代码如下:

public override void OnException(ExceptionContext filterContext)
    {
        if (filterContext != null && filterContext.HttpContext != null && filterContext.Exception != null)
        {
            //If customError is Off, then AI HTTPModule will report the exception
            if (filterContext.HttpContext.IsCustomErrorEnabled)
            {   
                      //Log to AI
            }
        }

        base.OnException(filterContext);
    }

因此,每当发生异常时,它都会通过此属性运行,这将在 Application Insights 中记录异常。

我的问题是 base.OnException 正在重定向到默认的“错误” View ,我删除了位于/Shared/Error.cshtml 中的默认错误 View ,并创建了我自己的错误 View 。如何让它重定向到我的自定义错误 View 而不是默认错误 View ?现在它正在抛出 View 错误,因为它找不到默认的错误 View 。

System.InvalidOperationException 未找到 View “错误”或其母版,或者没有 View 引擎支持搜索的位置。搜索了以下位置:~/Views/Shared/Error.aspx ~/Views/Shared/Error.ascx ~/Views/Shared/Error.cshtml ~/Views/Shared/Error.vbhtml

任何对此的见解将不胜感激。谢谢!

最佳答案

考虑这些选项:

1- 您不需要更改Error.cshtml 文件名,您可以更改文件的内容。

2- 您可以通过这种方式将 View 名称传递给您的自定义属性,并使用此属性装饰操作或 Controller :

[CustomHandleError(View="SomeView")]

3- 如果您不想传递 View 名称并且希望名称位于中心位置,您可以这样编写自定义属性并使用[CustomHandleError]:

public class CustomHandleError:HandleErrorAttribute
{
    public CustomHandleError():base()
    {
        View = "SomeView";
    }
    //rest of your implementation
}

关于c# - 如何更改 ExceptionContext 自定义属性的重定向 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36361323/

相关文章:

c# - 如何实现 Telerik 自定义聚合?

c# - ASP.NET MVC注册警报SQL func用户存在

c# - UnityContainer - 如何使用依赖链注册/解析

c# - 如何在 Linq 中添加两个列表 addedList[x] = listOne[x] + listTwo[x]?

c# - 有效地等待一个或多个资源可用

c# - 值类型是否像引用类型一样保留类型指针 + 同步根 + 静态字段?

c# - 使用附加到进程在 Visual Studio 2008 中调试 DLL 项目

asp.net-mvc - asp.net mvc linq sql问题

c# - 如何确定 ASP.NET MVC Post 中使用的编码?

asp.net - 从 Microsoft Word 粘贴时,HTML5 编辑器丢失了格式