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

Asp.net core mvc 如何使用.Net Core 2.2 MVC处理自定义错误,asp.net-core-mvc,custom-error-pages,asp.net-core-2.2,Asp.net Core Mvc,Custom Error Pages,Asp.net Core 2.2,我在youtube上看到了如何处理自定义错误,但它使用的是web.config,而在dotnet core 2.2中没有此文件,或者我无法通过visual studio 2019找到它 ASP.NET Core不使用Web.config,除非您在IIS中托管,然后仅用于最低限度的IIS模块配置。自定义错误处理通过启动中的中间件配置完成。Configure方法。不过,这实际上包含在默认项目模板中,因此,在默认情况下,您没有包含至少可以从中工作的内容,这很奇怪。不管怎样,您看到的是: if (env

我在youtube上看到了如何处理自定义错误,但它使用的是web.config,而在dotnet core 2.2中没有此文件,或者我无法通过visual studio 2019找到它

ASP.NET Core不使用Web.config,除非您在IIS中托管,然后仅用于最低限度的IIS模块配置。自定义错误处理通过
启动中的中间件配置完成。Configure
方法。不过,这实际上包含在默认项目模板中,因此,在默认情况下,您没有包含至少可以从中工作的内容,这很奇怪。不管怎样,您看到的是:

if (env.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
    app.UseDatabaseErrorPage();
}
else
{
    app.UseExceptionHandler("/Error");
}
这通常会将任何全局未捕获异常路由到常规
/Error
端点,该端点可以是控制器操作或Razor页面。更可能的情况是,您需要更大的灵活性,并且您也不希望在浏览器中公开实际的“错误”URL,因此您可能会使用
useStatusCodePageSwithExecute
UseExceptionHandler

app.UseStatusCodePagesWithReExecute("/StatusCode","?code={0}");
这将保留URL,而无需重定向和加载
/StatusCode
端点,同时传递特定的状态代码(404、400、500等),从而允许您按错误类型返回自定义消息

所有这些以及更多的都在未来