提问人:cds 提问时间:3/20/2021 最后编辑:TylerHcds 更新时间:5/1/2021 访问量:745
.NET Core 5 mvc 中的多个错误导致“System.Private.CoreLib 中的异常.dll”
Multiple errors in .NET Core 5 mvc result in `Exception in System.Private.CoreLib.dll`
问:
我正在新的 .NET 5 MVC 项目中实现/测试我的错误处理,我遇到了以下内容。
- 在 HomeController 中引发错误
public async Task<IActionResult> Index()
{
throw new DivideByZeroException();
return View();
}
- 异常由应用在 ErrorController 中处理。UseExceptionHandler(“/错误”)
public IActionResult Index()
{
var vm = new ErrorViewModel();
var exception = HttpContext.Features.Get<IExceptionHandlerFeature>();
- 到目前为止,以下内容将在 _Layout 中执行
@await Component.InvokeAsync("Menu")
- 菜单还包含错误
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();它只是在第一个异常处停止,这很好,但是当我尝试模拟“生产”时,它没有。
答:
2赞
osman
3/20/2021
#1
转到“调试”/“Windows/异常设置”,然后在“公共语言运行时异常”下选中“异常”。引发异常时,调试器将停止,你将能够看到发生了什么。
请注意,在某些情况下,预期和处理异常的情况并不罕见。您可能会发现异常是预期和处理的,无需执行任何操作来修复它。
0赞
cds
3/20/2021
#2
我按照你的建议做了,但它只是停在我的_layout线上
@await Component.InvokeAsync("Menu")
当我查看错误时,嗯,这是我在第 4 步抛出的错误。在那之前,这一切都是有道理的。
但后来我预计程序会跳回我的错误控制器,这样我就可以正确地捕获它并显示我的错误页面。
它现在所做的只是给出一个这样的页面:
评论