Programmering

Sådan arbejder du med HTTPHandlers i ASP.Net

En HTTPhandler kan defineres som et slutpunkt, der udføres som svar på en anmodning og bruges til at håndtere specifikke anmodninger baseret på udvidelser. ASP.Net-runtime-motoren vælger den relevante handler til at betjene en indgående anmodning baseret på filtypen af ​​anmodnings-URL'en. Tværtimod er en HttpModule en komponent, der er en del af ASP.Net-behandlingsrørledningen og kaldes til hver anmodning, der sendes til din applikation. Bemærk, at det grundlæggende mål for både HTTPhandlers og HttpModules er at injicere forbehandlingslogik til rørledningen.

Antag, at din applikation skal vise billeder i forskellige størrelser - du kan drage fordel af en brugerdefineret HTTP-håndterer til at ændre størrelsen på disse billeder og sende svaret tilbage. Et andet scenarie, hvor du muligvis vil bruge en brugerdefineret HTTPhandler, er, når du gerne vil udføre en forbehandlingslogik i din applikation baseret på udvidelserne. Selvom du kan gøre næsten alt hvad du kan gøre med HTTPhandler også med din ASP.Net-side, er HTTPhandlers meget mere bærbare og genanvendelige end dine websider.

Når en anmodning om en ressource kommer til ASP.Net Engine, opretter ASP.Net Worker-processen igen den relevante HTTP-håndterer til serveren af ​​anmodningen baseret på udvidelsen. En HTTPhandler i ASP.Net er en klasse, der implementerer IHTTPhandler-interface. I øvrigt er IHTTPhandler-interface tilgængeligt i navneområdet System.Web. Bemærk, at PageHandlerFactory implementerer IHTTPhandlerFactory-grænsefladen og indeholder en metode kaldet GetHandler, som igen er ansvarlig for at returnere den relevante handler til serveren for den specifikke anmodning.

MSDN siger: "En ASP.Net HTTPhandler er den proces (ofte benævnt" slutpunktet "), der kører som reaktion på en anmodning til en ASP.Net-webapplikation. Den mest almindelige handler er en ASP.Net-sidehåndtering der behandler .aspx-filer. Når brugere anmoder om en .aspx-fil, behandles anmodningen af ​​siden via sidehåndtereren. "

Oprettelse af en brugerdefineret HTTP-håndterer

I dette afsnit vil vi undersøge, hvordan vi kan opbygge en brugerdefineret HTTPhandler i ASP.Net. For at oprette en brugerdefineret HTTP-håndterer skal du oprette en klasse, der implementerer IHTTP-håndtereren som vist i kodestykket nedenfor.

navneområde CustomHTTP-håndterer

{

offentlig klasse CustomHTTP-håndterer: IHTTP-håndterer

   {

public bool IsReusable

       {

få {returner falsk; }

       }

offentlig ugyldig ProcessRequest (HttpContext-kontekst)

       {

smid ny NotImplementedException ();

       }

   }

}

Bemærk, at din brugerdefinerede HTTP-handler skal have en egenskab kaldet IsReusable og en metode kaldet ProcessRequest. Mens førstnævnte bruges til at specificere, om handleren kan genbruges, er sidstnævnte en metode, der udfører den faktiske behandling for dig. I det væsentlige skal enhver brugerdefineret HTTPHandler implementere IHttphandler-grænsefladen og definere disse to medlemmer.

Registrering af din handler

Kortlægningsoplysningerne til HTTPhandlers er tilgængelige i konfigurationsfilerne. Sådan ser et afsnit af din machine.config-fil ud.

Nu skal du også fortælle runtime, hvornår din brugerdefinerede HTTPhandler skal påberåbes. Hvor skal du specificere dette? Godt kan specificere sådanne detaljer i web.config-filen. Du kan tilføje og fjerne HTTPhandlers ved hjælp af konfigurationsafsnittet i din applikations konfigurationsfil. Sådan kan du registrere din handler i programmets web.config-fil.

  

Så hvad gjorde vi her? Vi registrerede netop vores handler og specificerede, at hvis en anmodning om en udvidelse af .idgaspx ankommer, skal en sådan anmodning dirigeres til den brugerdefinerede Http Handler ved navn CustomHTTPhandler.

Bemærk, at i modsætning til .aspx-websider har HTTPhandlers ikke visuelle elementer. Du kan oprette dine HTTP-handlere i et brugerdefineret bibliotek og derefter genbruge dem, når og når de er nødvendige.

Asynkrone HTTPHandlers

De nyere versioner af ASP.Net understøtter asynkrone Http-handlere. Du kan drage fordel af async / wait og TPL til at opbygge asynkrone HTTPhandlers i ASP.Net. For at oprette en brugerdefineret asynkron HTTP-håndterer skal du arve klassen HttpTaskAsyncHandler. HttpTaskAsyncHandler-abstraktklassen implementerer igen IHttpAsyncHandler- og IHTTPhandler-grænsefladerne. Følgende kodestykke illustrerer, hvordan vores brugerdefinerede asynkrone HTTP-håndterer ser ud ved første øjekast.

offentlig klasse CustomHTTP-håndterer: HttpTaskAsyncHandler

   {

offentlig tilsidesættelse af Task ProcessRequestAsync (HttpContext context)

       {

smid ny NotImplementedException ();

       }

   }