TransferRequest vs Transfer în ASP.Net (Programare, Asp.Net, Iis 7, Transfer)

Sujit a intrebat.

Am trecut prin link-urile menționate mai jos,

Forum iis și HttpModules & Server.Transfer / Server.TransferRequest / Probleme RewritePath. dar nu reușesc să prind conceptul din spatele acestor metode de transfer.

Cum funcționează ele? Și care dintre ele este preferată în diferite situații?

Poate cineva să-mi explice metodele TransferRequest vs Transfer pentru transferul pe partea serverului în asp.net și rolurile sale?

Vă mulțumesc anticipat

2 răspunsuri

HttpServerUtility.Transfer Încheie execuția paginii curente și începe execuția URL-ului furnizat. Practic, acest lucru mapează și execută o nouă pagină ASP.NET (sau servește un fișier static) corespunzătoare url-ului furnizat. Aceasta face acest lucru pe loc, în conducta de cereri curentă, fără a aplica o nouă configurație la noul url sau fără a rula din nou modulele IIS pentru noul url. Din acest motiv, este foarte rapid, dar previne, de asemenea, o mulțime de scenarii care sunt posibile cu TRQ.

HttpServerUtility.TransferRequest Efectuează o execuție asincronă a adresei URL furnizate. Aceasta este o cerere IIS copil completă sub acoperire, ceea ce îi permite să ruleze din nou întregul proces de cerere pentru noua cerere ca și cum ar fi o cerere separată, obținând configurația corectă pentru aceasta și rulând toate modulele IIS normale, inclusiv autentificarea, autorizarea etc. De exemplu, IIS va aplica regulile de autorizare pentru noua adresă URL, spre deosebire de cea anterioară.

Robert Claypool

TransferRequest rulează din nou întreaga cerere ca și cum ar fi o cerere separată. Aceasta înseamnă că modulele IIS și ASP.NET sunt aplicate din nou; regulile de autentificare și autorizare pentru noul URL vor fi respectate. Rețineți că TransferRequest necesită modul integrat al pipeline-ului din IIS 7+, iar transferul poate fi către o pagină ASP sau o altă resursă, cum ar fi un fișier XML.

Transfer transferă execuția de la o pagină ASP la o altă pagină ASP de pe server. Spre deosebire de TransferRequest, IIS și ASP.NET NU verifică dacă utilizatorul curent este autorizat să vizualizeze resursa furnizată prin metoda Transfer. Dacă aveți nevoie să forțați reautorizarea și modul pipeline integrat nu este o opțiune, apelați Redirect în locul metodei Transfer. Redirect declanșează o redirecționare pe partea clientului, astfel încât noua cerere va fi supusă tuturor logicii de autentificare și autorizare din IIS și ASP.NET.