首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >UseStatusCodePagesWithRedirects和UseStatusCodePagesWithReExecute -状态代码页在Asp.net核中的区别

UseStatusCodePagesWithRedirects和UseStatusCodePagesWithReExecute -状态代码页在Asp.net核中的区别
EN

Stack Overflow用户
提问于 2018-05-17 21:02:48
回答 2查看 3.3K关注 0票数 4

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

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

我发现我们可以使用两种扩展方法来实现这一点,即UseStatusCodePagesWithRedirects和UseStatusCodePagesWithReExecute。我从Microsoft那里发现的唯一不同是,

UseStatusCodePagesWithRedirects:将302发送到客户端。

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

这是唯一的区别吗?

EN

回答 2

Stack Overflow用户

发布于 2019-04-19 17:03:49

我认为主要的区别在于,UseStatusCodePagesWithRedirects将您重定向到错误控制器操作方法,而UseStatusCodePagesWithReExecute只是呈现页面而不重定向。

示例

控制器动作

代码语言:javascript
运行
复制
[Route("error/404")]
public IActionResult Error404(int code)
{

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

启动Cinfigue

代码语言:javascript
运行
复制
 app.UseStatusCodePagesWithRedirects("/error/{0}");

代码语言:javascript
运行
复制
  app.UseStatusCodePagesWithReExecute("/error/{0}");

案例1 (404错误)

网址:页面

1) UseStatusCodePagesWithRedirects

结果

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

我们看到了Error404页面

2) UseStatusCodePagesWithReExecute

结果

网址是:页面

我们看到了Error404页面

Case2 (401错误)

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

1) UseStatusCodePagesWithRedirects

结果

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

我们在无穷大的循环中叠加

1) UseStatusCodePagesWithRedirects

结果

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

对于401错误,我们看到默认浏览器错误页。

票数 2
EN

Stack Overflow用户

发布于 2020-08-22 16:38:40

在使用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)保存在developer工具中。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50400452

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档