Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 51405|Antwoord: 5

[ASP.NET] asp.net IHttpModule-interface wordt in detail uitgelegd

[Link kopiëren]
Geplaatst op 13-03-2018 21:46:06 | | | |
Vooraan geschreven

Wat betreft de relevante inhoud van IHttpModule, werd ik ook tijdens het interview gevraagd, en ik had vaag het gevoel dat deze interface een Init-methode heeft, die een reeks gebeurtenissen kan registreren met de Init-methode in de implementatieklas. Thuis dit weekend is er eigenlijk niets te doen, zelfs niet als het is om de gaten in deze kennis te controleren en op te vullen.

IHttpModule werkt

Vrienden die bekend zijn met asp.net levenscyclus moeten weten dat de uitvoering van HttpModule plaatsvindt vóór HttpHandler, en na het uitvoeren van een reeks gebeurtenissen van HttpModule, vervolgens het uitvoeren van HttpHandler en vervolgens enkele gebeurtenissen van HttpModule. Voor details kunt u het volgende levenscyclusdiagram raadplegen.



De HttpHandler is de plek om het HTTP-verzoek af te handelen, de HttpModule is de "enige manier" voor een HTTP-verzoek, dus je kunt wat benodigde informatie bovenop de HTTP-verzoekinformatie toevoegen voordat dit HTTP-verzoek wordt doorgegeven aan het echte verzoekverwerkingscentrum (HttpHandler), of extra werk doen aan de onderschepte HTTP-verzoekinformatie. Of in sommige gevallen simpelweg HTTP-verzoeken beëindigen die aan bepaalde voorwaarden voldoen, wat als filter kan fungeren.

Een HTTP-verzoek wordt op een gegeven moment (ResolveRequestCache-event) tijdens de levering van de HttpModule-container doorgegeven aan de HttpHandler-container. Na dit event maakt de HttpModule-container een ingress-instantie van de HttpHandler aan, maar in plaats van de controle over het HTTP-verzoek op te geven, blijft het de AcquireRequestState- en PreRequestHandlerExcute-evenementen afvuren. Na het PreRequestHandlerExcute-evenement geeft het HttpModule-venster tijdelijk controle over aan de HttpHandler-container voor echte HTTP-verzoekverwerking.

Binnen de HttpHandler-container wordt de ProcessRequest-methode uitgevoerd om HTTP-verzoeken af te handelen. Nadat de container-HttpHandler het volledige HTTP-verzoek heeft verwerkt, geeft het de controle terug aan de HttpModule, die de verwerkte HTTP-verzoekinformatiestroom laag voor laag doorgeeft totdat deze wordt teruggegeven aan de client.

Een voorbeeld

Projectstructuur



MyHttpModule-code

Registreer een aangepaste HttpModule in web.config

Blader door pagina Default.aspx



Wat is dan de volgorde van uitvoering van een reeks gebeurtenissen in de levenscyclus?


Bekijk de resultaten



Gebruik HttpModule om het Http-verzoek te beëindigen


resultaat



samenvatting

Hier introduceren we de belangrijkste interface in de asp.net levenscyclus, IHttpModule, die kan worden omschreven als een gebeurtenisinterface, omdat in de Init-methode in de implementatieklasse verschillende gebeurtenissen in de levenscyclus kunnen worden geregistreerd en diverse logica in het event kunnen worden gedefinieerd.





Vorig:Asp.Net IHttpHandler introduceerde
Volgend:C# moet deze header-workaround aanpassen met de juiste attributen of methoden
 Huisbaas| Geplaatst op 13-03-2018 21:46:47 |
. NETFramework 4.5 biedt 25 standaardgebeurtenissen.


 Huisbaas| Geplaatst op 13-03-2018 21:47:03 |
. NETFramework 4.0, dat 19 standaardgebeurtenissen biedt.

1. BeginRequest: Het eerste event van asp.net om het verzoek te verwerken, wat het begin van de verwerking aangeeft.

2. AuthenticateRequest: Authenticatieverzoek, meestal gebruikt om de gebruikersinformatie van het verzoek te verkrijgen.

3. PostAuthenticateRequest: De gebruikersinformatie die is opgevraagd.

4. AuthorizeRequest: Autorisatie, meestal gebruikt om te controleren of het verzoek van de gebruiker toestemming heeft gekregen.

5. PostAuthorizeRequest: Het gebruikersverzoek is geautoriseerd.

6. ResolveRequestCache: Verkrijg de verwerkingsresultaten van de vorige verwerkingscache; als deze eerder is gecachet, is het niet nodig om het verzoek te verwerken en direct de gecachte resultaten terug te geven.

7. PostResolveRequestCache: De cache is verwerkt.

8. PostMapRequestHandler: Het gevraagde processorobject is aangemaakt op basis van het verzoek van de gebruiker.

9. AcquireRequestState: Verkrijg de status van het verzoek, dat doorgaans wordt gebruikt voor de sessie

10. PostAcquireRequestState: Zitting is verkregen

11. PreRequestHandlerExecute: Bereid de execution handler voor.

12. PostRequestHandlerExecute: De handler is uitgevoerd

13. ReleaseRequestState: De staat van het verzoek om vrijlating.

14. PostReleaseRequestState: De status van het verzoek is vrijgegeven.

15. UpdateRequestCache: Werk de cache bij.

16. PostUpdateRequestCache: De cache is bijgewerkt.

17. LogRequest: De logbewerking die is aangevraagd,

18. PostLogRequest: De logbewerking van het verzoek is voltooid.

19. EndRequest: Het verzoek wordt verwerkt.
Geplaatst op 22-04-2019 09:48:33 |
Bladwijzer het
Geplaatst op 30-09-2021 19:19:09 |
Onlangs aan het studeren. Lees het goed door
 Huisbaas| Geplaatst op 14-07-2023 20:26:36 |
ASP.NET MVC telt verzoeken op basis van IHttpModule-modules
https://www.itsvse.com/thread-10627-1-1.html
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com