如何使用 .Net Core 2.2 MVC 处理自定义错误
How to handle Custom Errors With .Net Core 2.2 MVC
我在 youtube 上看到了如何处理自定义错误,但它是 web.config 并且在 dotnet core 2.2 中它没有这个文件,或者我在 visual studio 2019 之前找不到它。
ASP.NET 核心不使用 Web.config,除非您在 IIS 中托管,并且仅用于最小的 IIS 模块配置。自定义错误处理是通过 Startup.Configure
方法中的中间件配置完成的。不过,这实际上包含在默认项目模板中,所以奇怪的是您没有默认包含的东西至少可以使用。无论如何,您正在查看类似的内容:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
}
这通常会将任何全局未捕获异常路由到一般 /Error
端点,它可以是控制器操作或 Razor 页面。更有可能的是,您需要更多的灵活性,并且您还希望不在浏览器中公开实际的 "error" URL,因此您可能会使用 UseExceptionHandler
UseStatusCodePagesWithReExecute
:
app.UseStatusCodePagesWithReExecute("/StatusCode","?code={0}");
这将保留 URL,在传递特定状态代码(404、400、500 等)时无需重定向和加载 /StatusCode
端点,允许您 return 每种错误类型的自定义消息。
所有这些以及更多内容都在 documentation。
我在 youtube 上看到了如何处理自定义错误,但它是 web.config 并且在 dotnet core 2.2 中它没有这个文件,或者我在 visual studio 2019 之前找不到它。
ASP.NET 核心不使用 Web.config,除非您在 IIS 中托管,并且仅用于最小的 IIS 模块配置。自定义错误处理是通过 Startup.Configure
方法中的中间件配置完成的。不过,这实际上包含在默认项目模板中,所以奇怪的是您没有默认包含的东西至少可以使用。无论如何,您正在查看类似的内容:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
}
这通常会将任何全局未捕获异常路由到一般 /Error
端点,它可以是控制器操作或 Razor 页面。更有可能的是,您需要更多的灵活性,并且您还希望不在浏览器中公开实际的 "error" URL,因此您可能会使用 UseExceptionHandler
UseStatusCodePagesWithReExecute
:
app.UseStatusCodePagesWithReExecute("/StatusCode","?code={0}");
这将保留 URL,在传递特定状态代码(404、400、500 等)时无需重定向和加载 /StatusCode
端点,允许您 return 每种错误类型的自定义消息。
所有这些以及更多内容都在 documentation。