Server.Transfer vs Response.Redirect
Gan serveris, gan atbilde ir objekti ASP.NET. Servera objekts nodrošina metodes un rekvizītus dažādiem uzdevumiem, kas saistīti ar serveri. Pārsūtīšana ir servera objekta metode, un tā pārsūta apstrādei informāciju par pašreizējo stāvokli uz citu .asp failu. Atbildes objekts apraksta metodes un rekvizītus, kas saistīti ar servera reakciju. Novirzīšana ir reakcijas objekta metode, un tā nosūta ziņojumu pārlūkam, liekot tam izveidot savienojumu ar citu URL. Pat ja gan Server.Transfer, gan Response.Redirect var izmantot, lai pārsūtītu lietotāju no vienas lapas uz otru, viņi atšķiras ar to, kā viņi faktiski veic šo uzdevumu.
Kas ir Response.Redirect?
Novirzīšana ir metode objektā Atbilde. Kad tiek izsaukta atbildes metode, tā lietotāju pārlūkprogrammai nosūta HTTP kodu 302 un pieprasītās Web lapas URL. HTTP kods 302 informē lietotāju pārlūkprogrammu, ka pieprasītais resurss atrodas citā URL. Kad pārlūks saņem kodu, tas atver resursu jaunajā vietā. Pieprasītā tīmekļa lapa var atrasties tajā pašā serverī kā lapa, kurā bija pieprasījums, vai arī tā varētu atrasties citā serverī. Pieprasot Web lapu, kas atrodas tajā pašā serverī, kurā pašreizējā lapa, atbildes metodi var izmantot šādi:
Response.Redirect (“nextPage.html”);
Pieprasot Web lapu, kas atrodas citā serverī, atbildes metodi var izmantot šādi:
Response.Redirect (“http://www.newServer.com/newPage.aspx”);
Kas ir Server.Transfer?
Kā minēts iepriekš, Transfer ir servera objekta metode. Kad tiek izsaukta pārsūtīšanas metode, sākotnējais pieprasījums tiek modificēts, lai pārsūtītu uz citu lapu tajā pašā serverī. Ja tiek pieprasīta jauna lapa, izmantojot serveri.Transfer, lietotāju tīmekļa pārlūkprogrammā parādītais URL nemainās. Tas notiek tāpēc, ka pārsūtīšana notiek servera pusē, un pārlūkprogrammai nav zināšanu par pārsūtīšanu. Izmantojot Server.Transfer otro pārslodzi (virknes ceļš, bool preserveForm) un otro parametru iestatot kā patiesu, izliktās formas mainīgos un vaicājuma virknes var padarīt pieejamas otrajā lapā.
Kāda ir atšķirība starp Server.Transfer un Response.Redirect?
Pat ja gan Server.Transfer, gan Response.Redirect var izmantot, lai pārsūtītu lietotāju no vienas lapas uz otru, starp šīm divām metodēm ir dažas atšķirības. Papildus acīmredzamajai sintaktiskajai atšķirībai, Response.Redirect veic turp un atpakaļ braucienu uz serveri, bet Server.Transfer maina tīmekļa servera fokusu uz citu Web lapu. Tāpēc, izmantojot Server.Transfer, servera resursus var saglabāt. No otras puses, Response.Redirect var izmantot, lai novirzītu lietotāju uz Web lapu citā serverī, savukārt Server.Transfer var izmantot tikai lietotāja novirzīšanai uz Web lapām tajā pašā serverī. Izmantojot arī Server.Transfer, jaunā lapa var piekļūt iepriekšējās lapas rekvizītiem, taču tas nav iespējams ar Response.Redirect. Turklāt, izmantojot jauno lapu, bet izmantojot serveri, pārlūka Adres.Redirect maina vietrādi URL pārlūka adreses joslā. Pārsūtīšanas gadījumā sākotnējais URL tiek saglabāts, un lapas saturs ir vienkārši aizstāts. Tātad lietotājs to nevar izmantot, lai pievienotu grāmatzīmi jaunajai lapai.