我有一个自定义属性,代码如下:
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/