IApplicationBuilder.New()的目的是什么

时间:2015-07-06 20:53:48

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

在新的ASP.NET 5.0(vNext)中,启动代码依赖于IApplicationBuilder interfaceUse方法用于向构建器添加处理程序,而Build用于构造最终委托。但我无法弄清楚New的目的是什么。我一直在GitHub中挖掘,但找不到任何使用它的地方。

任何人都明白该方法的目的是什么?

2 个答案:

答案 0 :(得分:3)

似乎是在那里分支[克隆]原始实例(可以在src/Microsoft.AspNet.Http/Extensions/MapExtensions.cs中演示)。还有一个先前的MapWhenExtensions.cs,但它似乎已从dev分支中删除。)

我怀疑它是以前设计的工件,可以根据环境绑定中间件,而不会影响root的配置。自从IBuilder重构到IApplicationBuilder之前它已经存在的事实以及大多数依赖都在已经从dev分支中删除的文件中,我会冒险猜测它&# 39;旧消息。

当然,由于界面和基础implementation都没有被评论,所以很难说。

答案 1 :(得分:2)

New()创建第二个ApplicationBuilder,共享第一个ApplicationServicesServerFeatures,但没有中间件。它由分支扩展程序(MapMapWhenUseWhen)在内部使用,以创建新的“分支”。

您可以在此处找到实施:ApplicationBuilder.cs

在某些情况下,它在更高级别的框架中也很有用。

例如,MVC Core中的[MiddlewareFilter]属性在内部使用New()来执行MVC框架内的一块ASP.NET Core中间件(即作为过滤器)。 MVC Core围绕中间件创建一个小管道,将其构建到RequestDelegate中,然后通过它运行HttpContext。就像ASP.NET Core使用Startup.cs中构建的“主”管道一样。

由于这个功能,我们可以从MVC内部重用一块通用的ASP.NET Core中间件。

有关更多信息,请参阅ASP.NET MVC Core中的MiddlewareFilterBuilder.cs