.NET Core 5 mvc 中的多个错误导致“System.Private.CoreLib 中的异常.dll”

Multiple errors in .NET Core 5 mvc result in `Exception in System.Private.CoreLib.dll`

提问人:cds 提问时间:3/20/2021 最后编辑:TylerHcds 更新时间:5/1/2021 访问量:745

问:

我正在新的 .NET 5 MVC 项目中实现/测试我的错误处理,我遇到了以下内容。

  1. 在 HomeController 中引发错误
    public async Task<IActionResult> Index()
    {
        throw new DivideByZeroException();
        return View();
    }
  1. 异常由应用在 ErrorController 中处理。UseExceptionHandler(“/错误”)
        public IActionResult Index()
        {
            var vm = new ErrorViewModel();
            var exception = HttpContext.Features.Get<IExceptionHandlerFeature>();
  1. 到目前为止,以下内容将在 _Layout 中执行
@await Component.InvokeAsync("Menu")
  1. 菜单还包含错误
        public async Task<IViewComponentResult> InvokeAsync()
        {
            throw new Exception("xxx");

现在我希望最后一个错误会再次通过我的 ErrorController,但我只是得到一个带有 500 消息的空白页。代码中没有错误,它只是停在那里。

尝试在 de Debug 输出中查找,但我能找到的只是:

Exception thrown: 'System.Exception' in System.Private.CoreLib.dll

当我将 2 个错误分开时,一切正常,但是当 2 个错误组合在一起时,它就失败了。这就像 .NET 无法同时处理多个错误一样。

当我使用应用程序时。UseDeveloperExceptionPage();它只是在第一个异常处停止,这很好,但是当我尝试模拟“生产”时,它没有。

asp.net-mvc . net-core 错误处理

评论


答:

2赞 osman 3/20/2021 #1

转到“调试”/“Windows/异常设置”,然后在“公共语言运行时异常”下选中“异常”。引发异常时,调试器将停止,你将能够看到发生了什么。

请注意,在某些情况下,预期和处理异常的情况并不罕见。您可能会发现异常是预期和处理的,无需执行任何操作来修复它。

0赞 cds 3/20/2021 #2

我按照你的建议做了,但它只是停在我的_layout线上

@await Component.InvokeAsync("Menu")

当我查看错误时,嗯,这是我在第 4 步抛出的错误。在那之前,这一切都是有道理的。

但后来我预计程序会跳回我的错误控制器,这样我就可以正确地捕获它并显示我的错误页面。

它现在所做的只是给出一个这样的页面:

我的 500 页示例