gpt4 book ai didi

exception-handling - 点网核心 : OnException method in a custom filter is called two times

转载 作者:行者123 更新时间:2023-12-01 12:20:54 25 4
gpt4 key购买 nike

我正在使用 dotnet core 并创建了一个自定义异常过滤器来处理异常。我面临的问题是,如果出现异常,自定义过滤器中的 onException 方法会被调用两次。下面是代码:

   public class CustomExceptionFilter : ExceptionFilterAttribute
{
public override void OnException(ExceptionContext context)
{
// Code
base.OnException(context);
}
}

Controller 代码是:
         [CustomExceptionFilter]   
public class MyController : Controller
{
// Raise an exception in any apis
}

为什么 onException 被调用两次?

最佳答案

我使用 Visual Studio 创建了一个新的 Asp.Net Core Web 应用程序并使用了标准的 Web 应用程序模板。然后我添加了 CustomExceptionFilter类并添加了 [CustomExceptionFilter]归因于 HomeController并在其中抛出异常 Index方法:

[CustomExceptionFilter]
public class HomeController : Controller
{

public IActionResult Index()
{
throw new Exception("Time to bail!");
return View();
}
}

最后,我在 CustomExceptionFilter 中的这一行上设置了一个断点:
 base.OnException(context);

并运行了网站。调试器在 throw 上停止当然,然后它在断点处停止。断点只命中一次。所以我的设置验证了预期的行为。

故障排除
过去,我遇到过类似的情况,应该只调用一次的东西被调用两次,结果几乎总是因为第二个 http 请求进来了,这是我没想到的。所以它实际上每个 http 请求只被调用一次。检查的一种方法是查看方法中的路径和查询,您可以按如下所示进行操作:
 public class CustomExceptionFilter : ExceptionFilterAttribute {
public override void OnException(ExceptionContext context) {

//set breakpoing on the following line to see what the requested path and query is
string pathAndQuery = context.HttpContext.Request.Path + context.HttpContext.Request.QueryString;

// Code
base.OnException(context);
}
}

关于exception-handling - 点网核心 : OnException method in a custom filter is called two times,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44041150/

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