gpt4 book ai didi

c# - 如果在 MVC 之后添加到 IApplicationBuilder,则开发人员异常页面为空白

转载 作者:行者123 更新时间:2023-11-30 19:15:42 25 4
gpt4 key购买 nike

如果在 MVC (app.UseMvc()) 之后添加到 IApplicationBuilder 中,开发人员异常页面 (app.UseDeveloperExceptionPage()) 为空Startup.cs Configure 方法。

Developer Exception Page added after MVC

如果在 MVC 之前添加,开发人员异常页面工作正常。

enter image description here

enter image description here

这种行为是故意的还是我做错了什么?

  • Mac 上的 Visual Studio Code 0.10.6
  • Microsoft.AspNet.Diagnostics 1.0.0-rc1-final
  • Microsoft.AspNet.Mvc 6.0.0-rc1-final
  • DNX 单声道 1.0.0-rc1-update1

最佳答案

即使您对此有答案,我还是想解释一下为什么添加异常中间件不会捕获之前添加的任何内容。

因此,您有一个使用中间件构建的管道。每个中间件(通常)都会调用在它之后添加的中间件。所以你有类似的东西:

M1 -> M2 -> M3 -> M4 -> ... -> Mn

当请求进来时,它会转到 M1,它可以执行以下操作:

  1. 进一步传递。
  2. 停止。

如果它通过得更远,那么当它返回时,中间件将有另一次机会来处理请求。所以请求是这样的:

Request | M1 | M2 | M3 | ... | Mn
--------+----+----+----+-----+---
X | | | | |
--> | | | |
| X | | | |
| --> | | |
| | X | | |
| | --> | |
| | | X | |
| | | --> |
| | | | --> X
| | | | <--
| | | <-- |
| | | X | |
| | <-- | |
| | X | | |
| <-- | | |
| X | | | |
<-- | | | |
X | | | | |

每个中间件都是一个方法调用:

M1() 
// Do something before M2
M2()
// Do something before M3
M3()
...
// Do something after M3
// Do something after M2

因此,如果中间件发生任何事情,它前面的任何中间件都有机会对此使用react。之后的事,就不知道了。例如。如果 M2 抛出异常,M1 可以捕获它,因为 M2 运行在 M1 的上下文中,但是 M3 尚未调用或已完成。

关于c# - 如果在 MVC 之后添加到 IApplicationBuilder,则开发人员异常页面为空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34560596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com