如何使用 .Net Core 2.2 MVC 处理自定义错误

Lui*_*uiz 1 custom-error-pages asp.net-core-mvc asp.net-core-2.2

我在 youtube 上看到如何处理自定义错误,但它是与 web.config 一起使用的,而在 dotnet core 2.2 中它没有此文件,或者我没有通过 Visual Studio 2019 找到它。

Chr*_*att 5

ASP.NET Core 不使用 Web.config,除非您在 IIS 中托管,并且仅用于最小的 IIS 模块配置。自定义错误处理是通过Startup.Configure方法中的中间件配置完成的。不过,这实际上已包含在默认项目模板中,因此奇怪的是,默认情况下您没有包含至少可以使用的内容。无论如何,您正在寻找类似的东西:

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
    app.UseDatabaseErrorPage();
}
else
{
    app.UseExceptionHandler("/Error");
}
Run Code Online (Sandbox Code Playgroud)

这通常会将任何全局未捕获的异常路由到通用/Error端点,该端点可以是控制器操作或 Razor 页面。更有可能的是,您需要更多的灵活性,并且您还希望不要在浏览器中公开实际的“错误”URL,因此您可能会使用以下子UseExceptionHandler命令UseStatusCodePagesWithReExecute

app.UseStatusCodePagesWithReExecute("/StatusCode","?code={0}");
Run Code Online (Sandbox Code Playgroud)

这将保留 URL,无需重定向并加载/StatusCode端点,同时传递特定状态代码(404、400、500 等),从而允许您根据错误类型返回自定义消息传递。

所有这些以及更多内容都在文档中。