gpt4 book ai didi

如果继承 BaseController,带有 OnException 的 ASP.NET MVC4 Controller 不起作用

转载 作者:行者123 更新时间:2023-12-02 05:34:29 26 4
gpt4 key购买 nike

我有一个 UsersController,带有 OnException(有效),但是如果我让 Controller 继承自 BaseController 时,OnException 不起作用,即使我将它放在 BaseController 中也是如此。

基本上我想让我所有的 Controller 都继承自 BaseController 所以我可以在那里只有一个 OnException 处理程序,它捕获一切...

最佳答案

您无需继承自定义 Controller 基类即可让所有 Controller 以相同方式处理异常。您可以使用 ActionFilter 来完成。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, 
AllowMultiple = true, Inherited = true)]
public class CustomHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext context)
{
// do custom exception handling here
// to return View("Error"), you can just do this:
context.Result = new ViewResult { ViewName = "Error" };
}
}

您可以使用此 Global.asax 将其应用于库中的所有 Controller :

public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
//filters.Add(new HandleErrorAttribute()); // default MVC setting
filters.Add(new CustomHandleErrorAttribute());
}

关于如果继承 BaseController,带有 OnException 的 ASP.NET MVC4 Controller 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11893644/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com