asp.net-core - UseStatusCodePagesWithRedirects 和 UseStatusCodePagesWithReExecute 之间的区别 - Asp.net core 中的状态代码页

标签 asp.net-core .net-core asp.net-core-mvc

我正在使用 UseStatusCodePages 中间件在我的应用程序上显示状态代码页,但它在 UI 上显示纯文本,没有任何其他信息,

我想显示带有状态代码信息的 UI 以及一些其他有用的信息,例如具有更用户友好页面的客户支持号码。

我发现我们可以使用两种扩展方法来做到这一点,即 UseStatusCodePagesWithRedirects 和 UseStatusCodePagesWithReExecute。我发现的唯一区别 Microsoft Docs是,

UseStatusCodePagesWithRedirects : 向客户端发送 302。

UseStatusCodePagesWithReExecute :发送原始状态代码并执行重定向 URL 的处理程序。

这是唯一的区别吗?

最佳答案

我认为主要区别在于 UseStatusCodePagesWithRedirects 将您重定向到错误 Controller 操作方法,而 UseStatusCodePagesWithReExecute 只是呈现页面而没有重定向

示例

Controller Action

[Route("error/404")]
public IActionResult Error404(int code)
{

    return View("Error404");
}
[Route("error/{code}")]
public IActionResult Error(int code)
{
    return StatusCode(code);
}

启动Cinfigue
 app.UseStatusCodePagesWithRedirects("/error/{0}");

或者
  app.UseStatusCodePagesWithReExecute("/error/{0}");

案例 1(404 错误)

网址:https://localhost:5001/notexits_page

1) UseStatusCodePagesWithRedirects
结果:

网址是:https://localhost:5001/error/404

我们看到Error404页面

2) UseStatusCodePagesWithReExecute

结果:

网址是:https://localhost:5001/notexits_page

我们看到Error404页面

案例 2(401 错误)

网址:https://localhost:5001/admin/users

1) UseStatusCodePagesWithRedirects
结果:

网址是:https://localhost:5001/error/401

我们在无限循环中堆叠

1) UseStatusCodePagesWithRedirects
结果:

网址是:https://localhost:5001/admin/users

我们看到 401 错误的默认浏览器错误页面

关于asp.net-core - UseStatusCodePagesWithRedirects 和 UseStatusCodePagesWithReExecute 之间的区别 - Asp.net core 中的状态代码页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50400452/

相关文章:

c# - 在 .NET Core 环境变量中表示字典 <string, string>

c# - 如何在 ASP.NET Core 2.0 中设置多个身份验证方案?

c# - ASP.net core 2.0 MVC 每个新的数据库迁移都包含以前迁移的数据

asp.net-core - 为什么.NET Core构建生成EXE文件但不生成dll文件?

.net-core - .Net Core 2.0 中的代码覆盖率

c# - openapi-generator 如何在我的解决方案的 MS 测试项目中生成 c-sharp .NET core 3.1 兼容测试?

javascript - 如何使用多个按钮切换可见性?

c# - ASP.NET5 MVC6 的模型绑定(bind)问题

docker - Dotnet Core docker cmd参数

c# - .Net Core MVC 自定义登录屏幕