【发布时间】:2016-01-27 07:34:07
【问题描述】:
我希望有 1 个错误页面,根据提供的查询字符串向用户显示略有不同的错误消息。
在创建新的 asp.net 5 项目时,我注意到 Startup.cs 文件中有以下代码。
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
当异常发生时,我已经能够让它显示正确的错误页面。我的问题是它似乎只捕捉到我的应用程序中没有处理的错误,即总是状态码为500。这个对吗?
为了处理404 错误,我使用以下代码:
app.UseStatusCodePagesWithReExecute("/Error/{0}");
我的控制器实现为:
[HttpGet("{statusCode}")]
public IActionResult Error(int statusCode)
{
return View(statusCode);
}
这似乎捕获了404 错误并显示正确的状态代码。
如果我在上面的 if 语句中更新我的代码以使用相同的操作,例如:
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error/{0}");
}
返回的状态码始终为0。
此外,当400、403 或任何其他情况发生时会发生什么?他们会被抓住吗?如果是这样,他们会在什么时候被抓住?
如您所知,我很困惑,希望有人能提供一个处理所有不同状态代码的示例。
【问题讨论】:
-
不会在 global.asax 帮助中的 Application_Error 事件中全局捕获错误? stackoverflow.com/questions/16884074/…
-
看起来像 asp.net MVC5?
-
可以发一下
UseExceptionHandler的代码吗? -
???这是内置在 asp 中的吗?
-
您是否愿意设计一些新的通用机制来处理这个问题,或者您只想让事情适合现有的代码?
标签: c# exception asp.net-core asp.net-core-mvc http-status-codes