Server.Transfer срещу Response.Redirect
И сървърът, и Response са обекти в ASP.NET. Сървърният обект предоставя методи и свойства за различни задачи, свързани със сървър. Прехвърлянето е метод на сървърния обект и той изпраща информация за текущото състояние в друг .asp файл за обработка. Обектът за отговор описва методи и свойства, свързани с отговора на сървъра. Пренасочването е метод на обекта Response и той изпраща съобщение до браузъра, като го кара да се свърже с различен URL адрес. Въпреки че и Server.Transfer и Response.Redirect могат да се използват за прехвърляне на потребител от една страница на друга, те са различни по начина, по който всъщност изпълняват тази задача.
Какво е Response.Redirect?
Пренасочване е метод в обекта Response. Когато се извика методът за отговор, той изпраща HTTP код 302 и URL адреса на заявената уеб страница до браузъра на потребителите. HTTP код 302 информира браузъра на потребителите, че исканият ресурс се намира под различен URL адрес. Когато браузърът получи кода, той отваря ресурса на новото място. Заявената уеб страница може да пребивава на същия сървър като тази, която съдържа заявката, или може да бъде пребиваваща в друг сървър. При заявяване на уеб страница, намираща се на същия сървър като текущата страница, методът на отговор може да се използва, както следва:
Response.Redirect ( "nextPage.html");
При заявяване на уеб страница, намираща се на друг сървър, методът на отговор може да се използва, както следва:
Response.Redirect ( "http://www.newServer.com/newPage.aspx");
Какво е Server.Transfer?
Както бе споменато по-рано, Transfer е метод на сървърния обект. Когато се извика методът на прехвърляне, първоначалната заявка се променя, за да се прехвърли на друга страница на същия сървър. Когато се изисква нова страница с помощта на Server.Transfer, URL адресът, показан в уеб браузъра на потребителите, не се променя. Това е така, защото прехвърлянето става от страна на сървъра и браузърът няма никакви познания за прехвърлянето. Чрез използването на второто претоварване за Server.Transfer (път на низа, boolserveForm) и задаване на втория параметър като вярно, публикуваните променливи на формата и низовете на заявките могат да бъдат предоставени на втората страница.
Каква е разликата между Server.Transfer и Response.Redirect?
Въпреки че и Server.Transfer и Response.Redirect могат да се използват за прехвърляне на потребител от една страница на друга, има някои разлики между двата метода. Освен очевидната синтактична разлика, Response.Redirect прави обиколка към сървъра, докато Server.Transfer променя фокуса на уеб сървъра към друга уеб страница. Следователно, използвайки Server.Transfer, ресурсите на сървъра могат да бъдат запазени. От друга страна, Response.Redirect може да се използва за пренасочване на потребителя към уеб страница на друг сървър, докато Server.Transfer може да се използва само за пренасочване на потребителя към уеб страници на същия сървър. Също така с помощта на Server.Transfer, свойствата на предишната страница могат да бъдат достъпни от новата страница, но това не е възможно с Response.Redirect. Освен това, Response.Redirect променя URL адреса в адресната лента на браузъра, когато се осъществява достъп до новата страница, но при използване на Server.Transfer оригиналният URL адрес се запазва и съдържанието на страницата е просто заменено. Така че потребителят не може да го използва за отметка на новата страница.