Server.Transfer vs Response.Redirect
Server e Response sono entrambi oggetti in ASP.NET. L'oggetto server fornisce metodi e proprietà per varie attività correlate a un server. Il trasferimento è un metodo dell'oggetto Server e invia le informazioni dello stato corrente a un altro file .asp per l'elaborazione. L'oggetto risposta descrive metodi e proprietà relativi alla risposta di un server. Il reindirizzamento è un metodo dell'oggetto Response e invia un messaggio al browser che lo collega a un URL diverso. Anche se sia Server.Transfer che Response.Redirect possono essere utilizzati per trasferire un utente da una pagina a un'altra, sono diversi nel modo in cui eseguono effettivamente questa attività.
Che cos'è Response.Redirect?
Il reindirizzamento è un metodo nell'oggetto risposta. Quando viene chiamato il metodo Response, invia il codice HTTP 302 e l'URL della pagina Web richiesta al browser degli utenti. Il codice HTTP 302 informa il browser degli utenti che la risorsa richiesta si trova sotto un URL diverso. Quando il browser riceve il codice, apre la risorsa nella nuova posizione. La pagina Web richiesta può risiedere sullo stesso server della pagina che conteneva la richiesta o potrebbe risiedere in qualche altro server. Quando si richiede una pagina Web che risiede sullo stesso server della pagina corrente, il metodo di risposta può essere utilizzato come segue:
Response.Redirect ( “nextPage.html”);
Quando si richiede una pagina Web che risiede su un altro server, il metodo di risposta può essere utilizzato come segue:
Response.Redirect ( “http://www.newServer.com/newPage.aspx”);
Che cos'è Server.Transfer?
Come accennato in precedenza, il trasferimento è un metodo dell'oggetto server. Quando viene chiamato il metodo di trasferimento, la richiesta originale viene modificata per trasferirla in un'altra pagina nello stesso server. Quando viene richiesta una nuova pagina utilizzando Server.Transfer, l'URL visualizzato nel browser Web dell'utente non cambia. Questo perché il trasferimento avviene sul lato server e il browser non ha alcuna conoscenza sul trasferimento. Utilizzando il secondo overload per Server.Transfer (percorso stringa, boer preserveForm) e impostando il secondo parametro come true, le variabili modulo pubblicate e le stringhe di query possono essere rese disponibili per la seconda pagina.
Qual è la differenza tra Server.Transfer e Response.Redirect?
Anche se sia Server.Transfer che Response.Redirect possono essere utilizzati per trasferire un utente da una pagina all'altra, ci sono alcune differenze tra i due metodi. Oltre all'apparente differenza sintattica, Response.Redirect effettua un round trip sul server, mentre Server.Transfer modifica l'attenzione del server Web su una pagina Web diversa. Pertanto, utilizzando Server.Transfer, è possibile preservare le risorse del server. D'altra parte Response.Redirect potrebbe essere utilizzato per reindirizzare l'utente a una pagina Web in un altro server, mentre Server.Transfer può essere utilizzato solo per reindirizzare l'utente a pagine Web sullo stesso server. Inoltre, utilizzando Server.Transfer, è possibile accedere alle proprietà della pagina precedente dalla nuova pagina, ma ciò non è possibile con Response.Redirect. Inoltre, Response.Redirect modifica l'URL nella barra degli indirizzi del browser quando si accede alla nuova pagina ma quando si utilizza il server. Trasferimento l'URL originale viene mantenuto e il contenuto della pagina viene appena sostituito. Quindi l'utente non può usarlo per aggiungere un segnalibro alla nuova pagina.