Programovanie

Ako pracovať s HTTPHandlers v ASP.Net

HTTPhandler možno definovať ako koncový bod, ktorý sa vykoná ako odpoveď na požiadavku a použije sa na spracovanie konkrétnych požiadaviek na základe rozšírení. Modul runtime ASP.Net vyberie vhodný obslužný program na poskytovanie prichádzajúcej žiadosti na základe prípony súboru adresy URL žiadosti. Naopak, HttpModule je komponent, ktorý je súčasťou potrubia na spracovanie žiadostí ASP.Net a je volaný pri každej požiadavke, ktorá je odoslaná do vašej aplikácie. Všimnite si, že základným cieľom HTTPhandlerov aj HttpModules je vloženie logiky predspracovania do potrubia.

Predpokladajme, že vaša aplikácia musí poskytovať obrázky rôznych veľkostí - môžete využiť vlastný HTTPhandler na zmenu veľkosti týchto obrázkov a odoslanie odpovede späť. Ďalším scenárom, kde možno budete chcieť použiť vlastný HTTPhandler, je prípad, keď chcete vo svojej aplikácii vykonať nejakú logiku predbežného spracovania na základe rozšírení. Aj keď s HTTPhandlerom môžete robiť takmer všetko, čo môžete urobiť, aj so svojou stránkou ASP.Net, HTTPhandlers sú oveľa prenosnejšie a opakovane použiteľné ako vaše webové stránky.

Keď požiadavka na prostriedok príde do modulu ASP.Net, proces ASP.Net Worker Process zase vytvorí inštanciu príslušného HTTPhandlera na serverovanie požiadavky na základe rozšírenia. HTTPhandler v ASP.Net je trieda, ktorá implementuje rozhranie IHTTPhandler. Mimochodom, rozhranie IHTTPhandler je k dispozícii v mennom priestore System.Web. Upozorňujeme, že PageHandlerFactory implementuje rozhranie IHTTPhandlerFactory a obsahuje metódu nazvanú GetHandler, ktorá je zase zodpovedná za vrátenie príslušného obslužného programu na server konkrétnej žiadosti.

Na serveri MSDN sa uvádza: „HTTPhandler ASP.Net je proces (často označovaný ako„ koncový bod “), ktorý sa spúšťa ako odpoveď na žiadosť odoslanú webovej aplikácii ASP.Net. Najbežnejším obslužným programom je obslužný program stránky ASP.Net. ktorá spracúva súbory .aspx. Keď používatelia požadujú súbor .aspx, stránka spracuje požiadavku prostredníctvom obslužného programu stránky. “

Vytvorenie vlastného HTTPhandlera

V tejto časti sa budeme venovať tomu, ako môžeme vytvoriť vlastný HTTPhandler v ASP.Net. Ak chcete vytvoriť vlastný HTTPhandler, vytvorte triedu, ktorá implementuje IHTTPhandler, ako je uvedené v útržku kódu nižšie.

menný priestor CustomHTTPhandler

{

verejná trieda CustomHTTPhandler: IHTTPhandler

   {

public bool IsReusable

       {

get {return false; }

       }

public void ProcessRequest (kontext HttpContext)

       {

hodiť nový NotImplementedException ();

       }

   }

}

Upozorňujeme, že váš vlastný obslužný program HTTP by mal mať vlastnosť nazvanú IsReusable a metódu nazvanú ProcessRequest. Zatiaľ čo prvý sa používa na určenie, či je možné obslužnú rutinu znovu použiť, druhý je metóda, ktorá za vás vykoná skutočné spracovanie. V podstate by každý vlastný HTTPHandler mal implementovať rozhranie IHttphandler a definovať týchto dvoch členov.

Registrácia vášho obslužného programu

Mapovacie informácie pre HTTPhandlers sú k dispozícii v konfiguračných súboroch. Tu je ukážka toho, ako môže vyzerať časť vášho súboru machine.config.

Teraz by ste tiež museli informovať runtime, kedy by sa mal vyvolať váš vlastný HTTPhandler. Kde by ste to mali špecifikovať? Takéto podrobnosti môžete určiť v súbore web.config. Môžete pridať a odobrať obslužné rutiny HTTP pomocou sekcie konfigurácie v konfiguračnom súbore aplikácií. Tu je príklad, ako môžete zaregistrovať svoju obslužnú rutinu v súbore web.config aplikácie.

  

Čo sme tu teda robili? Práve sme zaregistrovali nášho obslužného programu a špecifikovali sme, že ak príde akákoľvek požiadavka na rozšírenie .idgaspx, mala by byť takáto požiadavka presmerovaná na vlastného obslužného programu Http s názvom CustomHTTPhandler.

Upozorňujeme, že na rozdiel od webových stránok .aspx, obslužné rutiny HTTP neobsahujú vizuálne prvky. Svoje manipulátory HTTP môžete vytvoriť vo vlastnej knižnici a potom ich znova použiť podľa potreby.

Asynchrónne HTTPHandlers

Novšie verzie ASP.Net poskytujú podporu pre asynchrónne obslužné rutiny Http. Môžete využiť výhody async / await a TPL na vytvorenie asynchrónnych HTTPhandlerov v ASP.Net. Ak chcete vytvoriť vlastný asynchrónny HTTPhandler, mali by ste zdediť triedu HttpTaskAsyncHandler. Abstraktná trieda HttpTaskAsyncHandler zase implementuje rozhrania IHttpAsyncHandler a IHTTPhandler. Nasledujúci úryvok kódu ilustruje, ako vyzerá náš vlastný asynchrónny HTTPhandler na prvý pohľad.

verejná trieda CustomHTTPhandler: HttpTaskAsyncHandler

   {

verejné prepísanie úlohy ProcessRequestAsync (kontext HttpContext)

       {

hodiť nový NotImplementedException ();

       }

   }

$config[zx-auto] not found$config[zx-overlay] not found