Hvad er Middleware?
Middleware er software, der samles i applikationspipelines for at håndtere forespørgsler og svar. Hver komponent:
- Vælg, om anmodningen vil sendes videre til næste komponent i pipelinen.
- Arbejdet kan udføres før og efter den næste komponent i pipelinen er påkaldt.
Anmodningsdelegerede bruges til at opbygge en anmodningspipeline, der håndterer hver HTTP-forespørgsel.
Anmodningsdelegerede konfigureres ved hjælp af Run, Map og Use-udvidelsesmetoderne. En separat anmodningsdelegeret kan specificeres i en anonym metode (kaldet inline middleware), eller den kan defineres i en genanvendelig klasse. Disse genanvendelige klasser og inline anonymiseringsmetoder er middleware eller middleware-komponenter. Hver middleware-komponent i anmodningsflowet er ansvarlig for at kalde den næste komponent i pipelinen og, hvis relevant, linkkortslutningen.
Migrering af HTTP-moduler til middleware forklarer forskellen mellem ASP.NET Core og anmodningspipelines i tidligere versioner (ASP.NET) og giver flere middleware-eksempler.
Brug IApplicationBuilder til at oprette en middleware-pipeline
Anmodningsprocessen ASP.NET Core består af en række anmodningsdelegerede, som vist i følgende figur (eksekveringsprocessen følger den sorte pil):
Hver delegeret kan udføre handlinger før og efter den næste delegerede. Delegaten kan også beslutte ikke at videregive anmodningen til den næste delegat, hvilket kaldes en kortslutning i anmodningspipelinen. En kortslutning er som regel ønskværdig, fordi den undgår unødvendigt arbejde. For eksempel kan statisk fil-middleware returnere en anmodning om en statisk fil og kortslutte resten af pipelinen. Undtagelseshåndteringsdelegater skal kaldes tidligt i pipelinen, så de kan fange undtagelser i senere pipelines.
Det simpleste er nok at oprette en delegeret ASP.NET Core-applikationen til at håndtere alle forespørgsler. Dette scenarie inkluderer ikke den faktiske anmodningspipeline. I stedet kaldes en anonym metode for hver HTTP-anmodning.
Den første app. Kør delegeret afslutter pipelinen.
Der findes kode som denne:
Når man tilgår via browseren, viser det sig, at det faktisk er i den første app. Run afslutter pipelinen.
Du kan delegere flere forespørgsler via appen. Brugen er forbundet. Den næste parameter repræsenterer den næste delegerede i pipelinen. (Husk, at du kan afslutte pipelinen ved ikke at kalde den næste parameter.) Du kan som regel udføre handlinger før og efter næste delegation, som vist i følgende eksempel:
Brug af en browser til at få adgang til resultater såsom:
Det kan ses, at eksekveringsrækkefølgen for anmodningsdelegeringen følger flowdiagrammet ovenfor.
Seddel:
Når svaret er sendt til klienten, skal du ikke ringe næste gang. Invoke。 Efter svaret starter, vil ændringer i HttpResponse give en undtagelse. For eksempel vil indstilling af svarheaders, statuskoder osv. give en undtagelse. Skriv svarteksten efter næste opkald.
kan føre til et brud på aftalen. For eksempel at skrive mere end den indholdslængde, der er beskrevet i indholdslængde.
Responsiv indholdsformatering kan være ødelagt. For eksempel kan du skrive en HTML-footer ind i en CSS-fil.
HttpResponse.HasStarted er et nyttigt tip til at angive, om et svar-header er sendt og/eller om brødteksten er skrevet.
Indbygget middleware
ASP.NET Core leveres med følgende middleware-komponenter:
| Mellemsoftware | beskrivelse | | Autentificering | Autentificeringsunderstøttelse er tilgængelig | | CORS | Konfigurer ressourcedeling på tværs af domæner | | Respons-cachering | Cache-respons understøttelse er tilgængelig | | Responskompression | Yde support til responskomprimering | | Routing | Definér og begræns anmodningsrouting | | Session | Tilbyder brugersessionsstyring | | Statiske filer | Understøtter statisk fil- og mappebrowsing | | URL-omskrivnings-middleware | Bruges til at omskrive URL'er og anmode om understøttelse af omdirigeringer |
|