Kirjoitettu edessä
IHttpModulen relevantista sisällöstä minulta kysyttiin myös haastattelussa, ja epämääräisesti tunsin, että tässä rajapinnassa on Init-metodi, joka voi rekisteröidä tapahtumasarjan Init-menetelmällä toteutuskurssilla. Kotona tänä viikonloppuna ei oikeastaan ole mitään tehtävissä, edes tarkistamassa ja täyttämässä tämän tiedon aukkoja.
IHttpModule-työt
Ystävät, jotka tuntevat asp.net elinkaaren, tietävät, että HttpModulin suoritus suoritetaan ennen HttpHandleria, ja sen jälkeen, kun HttpModulen tapahtumasarja on suoritettu, sitten suoritettu HttpHandler ja lopuksi suoritettu joitakin HttpModulen tapahtumia. Lisätietoja löydät seuraavasta elinkaaren kaaviosta.
HttpHandler on paikka, jossa käsitellään HTTP-pyyntöä, HttpModule on "ainoa tapa" HTTP-pyynnölle, joten voit lisätä tarvittavaa tietoa HTTP-pyynnön tietojen päälle ennen kuin tämä HTTP-pyyntö siirretään varsinaiseen pyyntöjen käsittelykeskukseen (HttpHandler), tai tehdä lisätyötä siepattujen HTTP-pyyntötietojen parissa. Tai joissain tapauksissa yksinkertaisesti lopeta HTTP-pyynnöt, jotka täyttävät tietyt ehdot, mikä voi toimia suodattimena.
HTTP-pyyntö välitetään HttpHandler-konttiin jossain vaiheessa (ResolveRequestCache-tapahtuma) HttpModule-kontin toimituksen aikana. Tämän tapahtuman jälkeen HttpModule-kontti luo HttpHandlerin sisääntuloinstanssin, mutta sen sijaan, että se luovuttaisi HTTP-pyynnön hallinnan, se jatkaa AcquireRequestState- ja PreRequestHandlerExcute-tapahtumien käynnistämistä. PreRequestHandlerExcute-tapahtuman jälkeen HttpModule-ikkuna antaa väliaikaisesti ohjauksen HttpHandler-kontille varsinaista HTTP-pyyntöjen käsittelyä varten.
HttpHandler-kontin sisällä suoritetaan ProcessRequest-metodi HTTP-pyyntöjen käsittelyyn. Kun kontti-HttpHandler käsittelee koko HTTP-pyynnön, se palauttaa ohjauksen HttpModulelle, joka jatkaa käsitellyn HTTP-pyynnön tiedonkulkujen välittämistä kerros kerrokselta, kunnes se palautetaan asiakkaalle.
Esimerkki
Projektin rakenne
MyHttpModule-koodi
Rekisteröi mukautettu HttpModule web.configissa
Selaa sivua Default.aspx
Mikä siis on tapahtumasarjan toteutusjärjestys elinkaaren aikana?
Selaa tuloksia
Käytä HttpModulea Http-pyynnön lopettamiseen
tulos
yhteenveto
Tässä esittelemme asp.net elinkaaren tärkeimmän rajapinnan, IHttpModulen, jota voidaan kuvata tapahtumarajapinnaksi, koska toteutusluokan Init-menetelmässä voidaan rekisteröidä erilaisia elinkaaren tapahtumia ja erilaisia logiikkaa voidaan määritellä tapahtumassa.
|