首页 > 解决方案 > UseStatusCodePagesWithRedirects 和 UseStatusCodePagesWithReExecute 之间的区别 - Asp.net 核心中的状态代码页

问题描述

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

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

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

UseStatusCodePagesWithRedirects:向客户端发送 302。

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

这是唯一的区别吗?

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

解决方案


当使用 app.UseStatusCodePagesWithRedirects("/Error/{0}") 和无效请求(让我们说“/abc/xyz”)然后提出

  • 发出404状态码,app.UseStatusCodePagesWithRedirects("/Error/{0}") 拦截请求并发出302状态码(表示请求资源的URI已临时更改)
  • 随着 302 的发出,另一个 get 请求被发出,这导致url 从“/abc/xyz”更改为“/Error/404”。
  • 由于请求被重定向到特定的错误控制器,因此请求的状态代码在浏览器开发者工具中为 200 ok

但是当使用 app.UseStatusCodePagesWithReExecute("/Error/{0}") 和无效请求时(让我们说“/abc/xyz”)然后提出;

  • app.UseStatusCodePagesWithReExecute("/Error/{0}") 中间件拦截 404 状态码并重新执行指向 URL 的管道

  • 当中间件重新执行管道时,地址栏中的原始 URL“/abc/xyz”被保留。它不会从“/abc/xyz”更改为“/Error/{0}”。

  • 原始状态代码(在这种情况下为 404)也保留在开发人员工具中。


推荐阅读