【发布时间】:2016-02-22 17:15:12
【问题描述】:
Owin中的app.use、app.run、app.map有什么区别?什么时候用什么?阅读文档并不简单。
【问题讨论】:
Owin中的app.use、app.run、app.map有什么区别?什么时候用什么?阅读文档并不简单。
【问题讨论】:
app.use 将一个中间件插入到管道中,这需要您通过调用 next.Invoke() 来调用下一个中间件。
app.run 插入一个没有 next 的中间件,所以它只是运行。
使用app.map,您可以映射在运行时根据请求评估的路径,以仅在请求路径与您映射的模式匹配时运行某些中间件。
有关详细信息,请参阅 use and run 和 map 的文档
【讨论】:
在处理请求时,我们使用 IApplicationBuilder。我们有四种方法可用于与请求进行交互:
这些被称为请求代表。
使用:
向应用程序管道添加一个中间件,它可以通过 下一个代表的请求,或者它可以结束请求(短路 请求管道)。是最常用的交互方式 使用中间件。
地图
我们使用 Map 将请求路径与另一个中间件连接起来。那 中间件可以使用任何其他提到的请求委托。
MapWhen
除了我们可以指定详细信息外,其行为几乎与 Map 相同 通过使用 HttpContext 对象来设置条件。我们可以检查网址, 标头、查询字符串、cookie 等)。
运行
生成响应并短路 请求
也请阅读此article 了解更多信息。
【讨论】: