Hva er Middleware?
Mellomware er programvare som settes sammen i applikasjonspipelines for å håndtere forespørsler og svar. Hver komponent:
- Velg om du vil sende forespørselen til neste komponent i pipelinen.
- Arbeid kan utføres før og etter at neste komponent i pipelinen er startet.
Forespørselsdelegater brukes til å bygge en forespørselspipeline som håndterer hver HTTP-forespørsel.
Forespørselsdelegater konfigureres ved hjelp av utvidelsesmetodene Run, Map og Use. En separat forespørselsdelegat kan spesifiseres i en inline anonym metode (kalt inline middleware), eller den kan defineres i en gjenbrukbar klasse. Disse gjenbrukbare klassene og metodene for inline anonymisering er mellomvare eller mellomvarekomponenter. Hver mellomvarekomponent i forespørselsflyten er ansvarlig for å kalle neste komponent i pipelinen og, om hensiktsmessig, koblingskortslutningen.
Migrering av HTTP-moduler til mellomvare forklarer forskjellen mellom ASP.NET Core og forespørselspipelines i tidligere versjoner (ASP.NET) og gir flere eksempler på mellomvare.
Bruk IApplicationBuilder for å lage en mellomvare-pipeline
ASP.NET Core-forespørselsprosessen består av en serie forespørselsdelegater, som vist i følgende figur (utførelsesprosessen følger den svarte pilen):
Hver delegat kan utføre handlinger før og etter neste delegat. Delegaten kan også velge å ikke sende forespørselen videre til neste delegat, noe som kalles en kortslutning i forespørselspipelinen. En kortslutning er vanligvis ønskelig fordi den unngår unødvendig arbeid. For eksempel kan statisk filmellomvare returnere en forespørsel om en statisk fil og kortslutte resten av pipelinen. Unntakshåndteringsdelegater må kalles tidlig i pipelinen, slik at de kan fange opp unntak i senere pipelines.
Det enkleste er sannsynligvis å sette opp en delegat ASP.NET Core-applikasjonen for å håndtere alle forespørsler. Dette scenariet inkluderer ikke selve forespørselspipelinen. I stedet kalles en anonym metode for hver HTTP-forespørsel.
Den første appen. Kjør delegat avslutter pipelinen.
Det finnes kode som dette:
Når man får tilgang via nettleseren, viser det seg at det faktisk er i den første appen. Run terminerer rørledningen.
Du kan delegere flere forespørsler via appen. Bruk henger sammen. Neste parameter representerer neste delegat i pipelinen. (Husk at du kan avslutte pipelinen ved å ikke kalle neste parameter.) Du kan vanligvis utføre handlinger før og etter neste delegasjon, som vist i følgende eksempel:
Bruk av en nettleser for å få tilgang til resultater som:
Det kan sees at kjørerekkefølgen til forespørselsdelegaten følger flytskjemaet ovenfor.
Notat:
Etter at svaret er sendt til klienten, ikke ring neste. Invoke。 Etter at svaret starter, vil endringer i HttpResponse gi et unntak. For eksempel vil det å sette svarheaders, statuskoder osv. gi et unntak. Skriv svarteksten etter at du ringte neste gang.
kan føre til brudd på avtalen. For eksempel å skrive mer enn innholdslengden som er beskrevet i innholdslengde.
Responsiv innholdsformatering kan være ødelagt. For eksempel, skriv en HTML-bunntekst inn i en CSS-fil.
HttpResponse.HasStarted er et nyttig hint for å indikere om en svarheader er sendt og/eller om innholdet er skrevet.
Innebygd mellomvare
ASP.NET Core leveres med følgende mellomvarekomponenter:
| Mellomvare | beskrivelse | | Autentisasjon | Autentiseringsstøtte er tilgjengelig | | CORS | Konfigurer ressursdeling på tvers av domener | | Respons-cache | Støtte for cache-respons er tilgjengelig | | Responskomprimering | Gi støtte for responskomprimering | | Ruting | Definer og begrens forespørselsruting | | Sesjon | Tilbyr administrasjon av brukersesjoner | | Statiske filer | Gir støtte for statisk fil- og kataloggjennomlesning | | URL-omskrivingsmellomvare | Brukes til å omskrive URL-er og be om støtte for omdirigeringer |
|