New()
crea un secondo ApplicationBuilder
, condividendo tutti i ApplicationServices
e ServerFeatures
del primo, ma nessuno del middleware. Viene utilizzato internamente dalle estensioni di diramazione (Map
, MapWhen
, UseWhen
) per creare il nuovo "ramo".
È possibile trovare l'implementazione qui: ApplicationBuilder.cs.
In alcuni casi, è utile anche in framework di livello superiore.
Ad esempio, l'attributo [MiddlewareFilter]
in MVC Core utilizza New()
internamente per eseguire una parte del middleware di ASP.NET Core all'interno del framework MVC (ovvero come filtro). MVC Core crea una piccola pipeline attorno al middleware, lo crea in un RequestDelegate, quindi esegue HttpContext attraverso di esso. Proprio come ASP.NET Core fa con la tua pipeline 'principale' costruita in Startup.cs
.
Grazie a questa funzione, è possibile riutilizzare un pezzo di middleware ASP.NET Core generico, dall'interno di MVC.
Per ulteriori informazioni, vedere MiddlewareFilterBuilder.cs in ASP.NET MVC Core.
fonte
2017-08-29 20:46:50
'app.Map' esiste ancora (ed è ** molto improbabile ** da rimuovere), ma ora fa parte del pacchetto' Microsoft.AspNet.Http.Abstractions': https://github.com/aspnet /HttpAbstractions/blob/dev/src/Microsoft.AspNet.Http.Abstractions/Extensions/MapExtensions.cs – Pinpoint
@pinpoint: Sono consapevole tuttavia che sono una famiglia di altri metodi '.Map *' che non hanno reso (anche questo ha usato questo metodo). –
A quali metodi di 'Mappa *' ti riferisci, esattamente? Le uniche estensioni di mappatura "ufficiali" rimandate all'era Katana erano 'Map' e' MapWhen': http://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin/Mapping/ – Pinpoint