【发布时间】:2019-10-01 21:47:03
【问题描述】:
我在 youtube 上看到了如何处理自定义错误,但它是使用 web.config 的,而在 dotnet core 2.2 中它没有这个文件,或者我没有通过 Visual Studio 2019 找到它。
【问题讨论】:
标签: 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-mvc custom-error-pages asp.net-core-2.2
ASP.NET Core 不使用 Web.config,除非您在 IIS 中托管,然后仅用于最小的 IIS 模块配置。自定义错误处理是通过 Startup.Configure 方法中的中间件配置完成的。不过,这实际上已包含在默认项目模板中,因此奇怪的是,您没有默认包含至少可以从中工作的内容。无论如何,您正在查看以下内容:
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
}
else
{
app.UseExceptionHandler("/Error");
}
这通常会将任何全局未捕获的异常路由到一般的/Error 端点,该端点可以是控制器操作或 Razor 页面。很可能,您需要更多的灵活性,并且您也不想在浏览器中公开实际的“错误”URL,因此您可能会将UseExceptionHandler 替换为UseStatusCodePagesWithReExecute:
app.UseStatusCodePagesWithReExecute("/StatusCode","?code={0}");
这将保留 URL,而无需重定向和加载 /StatusCode 端点,同时传递特定的状态代码(404、400、500 等),允许您根据错误类型返回自定义消息。
所有这些以及更多内容都在documentation 中。
【讨论】: