Server.Transfer vs Response.Redirect
Palvelin ja Response ovat molemmat kohteita ASP.NET: ssä. Palvelinobjekti tarjoaa menetelmiä ja ominaisuuksia palvelimeen liittyviin erilaisiin tehtäviin. Siirto on palvelinobjektin menetelmä ja se lähettää nykyisen tilan tiedot toiseen .asp-tiedostoon käsittelyä varten. Vastausobjekti kuvaa palvelimen vastaukseen liittyviä menetelmiä ja ominaisuuksia. Uudelleenohjaus on vastausobjektin menetelmä ja se lähettää viestin selaimeen saaden sen yhdistämään toiseen URL-osoitteeseen. Vaikka sekä Server.Transfer- että Response.Redirect -sovelluksia voidaan käyttää siirtämään käyttäjää sivulta toiselle, ne eroavat toisistaan siinä, miten ne tosiasiallisesti suorittavat tämän tehtävän.
Mikä on Response.Redirect?
Uudelleenohjaus on menetelmä Response-objektissa. Kun vastausmenetelmää kutsutaan, se lähettää HTTP-koodin 302 ja pyydetyn verkkosivun URL-osoitteen käyttäjien selaimeen. HTTP-koodi 302 ilmoittaa käyttäjien selaimelle, että pyydetty resurssi sijaitsee eri URL-osoitteessa. Kun selain vastaanottaa koodin, se avaa resurssin uuteen sijaintiin. Pyydetty verkkosivu voi sijaita samassa palvelimessa kuin pyynnön sisältänyt sivu tai se voi sijaita jossain muussa palvelimessa. Pyydettäessä verkkosivua, joka asuu samalla palvelimella kuin nykyinen sivu, vastausmenetelmää voidaan käyttää seuraavasti:
Response.Redirect ( ”nextPage.html”);
Kun pyydetään toisella palvelimella olevaa verkkosivua, Response-menetelmää voidaan käyttää seuraavasti:
Response.Redirect ( ”http://www.newServer.com/newPage.aspx”);
Mikä on Server.Transfer?
Kuten aiemmin mainittiin, siirto on palvelinobjektin menetelmä. Kun siirtomenetelmää kutsutaan, alkuperäistä pyyntöä muokataan siirtämään muille saman palvelimen sivuille. Kun uutta sivua pyydetään Server.Transfer -sovelluksen avulla, käyttäjien selaimessa näkyvä URL-osoite ei muutu. Tämä johtuu siitä, että siirto tapahtuu palvelinpuolella eikä selaimella ole mitään tietoa siirrosta. Käyttämällä toista ylikuormaa Server.Transfer (merkkipolku, bool säilytäForm) ja asettamalla toinen parametri totta, lähetetyt lomakemuuttujat ja kyselymerkkijonot voidaan asettaa toiselle sivulle.
Mikä on ero Server.Transfer ja Response.Redirect?
Vaikka sekä Server.Transfer- että Response.Redirect -sovelluksia voidaan käyttää käyttäjän siirtämiseen sivulta toiselle, näiden kahden menetelmän välillä on joitain eroja. Ilmeisen syntaktisen eron lisäksi Response.Redirect tekee paluumatkan palvelimeen, kun taas Server.Transfer muuttaa web-palvelimen painopisteen toiselle verkkosivulle. Siksi palvelinresurssit voidaan säilyttää käyttämällä Server.Transfer -sovellusta. Toisaalta Response.Redirect -sovellusta voidaan käyttää käyttäjän ohjaamiseen toisen palvelimen verkkosivulle, kun taas Server.Transfer -sovellusta voidaan käyttää vain käyttäjän ohjaamiseen saman palvelimen verkkosivuille. Myös käyttämällä Server.Transfer -palvelua, uusi sivu pääsee edellisen sivun ominaisuuksiin, mutta tämä ei ole mahdollista Response.Redirect-toiminnolla. Lisäksi Response.Redirect muuttaa URL-osoitetta selaimen osoiterivillä, kun uutta sivua avataan, mutta kun käytetään Palvelinta. Siirrä alkuperäinen URL säilyy ja sivun sisältö korvataan vain. Joten käyttäjä ei voi käyttää sitä uuden sivun kirjanmerkkeihin.