New()
tworzy drugi ApplicationBuilder
, udostępniając wszystkie ApplicationServices
i ServerFeatures
z pierwszego, ale żaden z middleware. Jest używany wewnętrznie przez rozgałęzione rozszerzenia (Map
, MapWhen
, UseWhen
) w celu utworzenia nowego "oddziału".
Możesz znaleźć implementację tutaj: ApplicationBuilder.cs.
W niektórych przypadkach jest również przydatny w frameworkach wyższego poziomu.
Na przykład atrybut [MiddlewareFilter]
w MVC Core używa wewnętrznie New()
, aby wykonać element pośredniczący warstwy pośredniej ASP.NET Core wewnątrz struktury MVC (tj. Jako filtr). MVC Core tworzy niewielki potok wokół oprogramowania pośredniego, buduje go w RequestDelegate, a następnie uruchamia przez niego HttpContext. Tak jak ASP.NET Core działa z twoim głównym potokiem zbudowanym w Startup.cs
.
Dzięki tej funkcji możemy ponownie użyć elementu podstawowego oprogramowania warstwy pośredniej ASP.NET Core, od wewnątrz MVC.
Aby uzyskać więcej informacji, zobacz MiddlewareFilterBuilder.cs w środowisku ASP.NET MVC.
'app.Map' nadal istnieje (i jest ** bardzo mało prawdopodobne ** do usunięcia), ale jest teraz częścią pakietu' Microsoft.AspNet.Http.Abstractions': https://github.com/aspnet /HttpAbstractions/blob/dev/src/Microsoft.AspNet.Http.Abstractions/Extensions/MapExtensions.cs – Pinpoint
@pinpoint: Jestem świadomy, że były rodziną innych metod ".Map *", które nie były to (który również użył tej metody). –
Których metod 'Map *' używasz dokładnie? Jedynymi "oficjalnymi" rozszerzeniami mapowymi, które kiedykolwiek zostały wysłane do ery Katany, były 'Map' i' MapWhen': http://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin/Mapping/ – Pinpoint