Server.Transfer ve Response.Redirect karşılaştırması
Sunucu ve Yanıt her ikisi de ASP.NET'teki nesnelerdir. Sunucu nesnesi, bir sunucuyla ilgili çeşitli görevler için yöntemler ve özellikler sağlar. Aktarım, Server nesnesinin bir yöntemidir ve geçerli durumla ilgili bilgileri işlenmek üzere başka bir .asp dosyasına gönderir. Yanıt nesnesi, bir sunucunun yanıtıyla ilgili yöntemleri ve özellikleri açıklar. Yönlendirme, Response nesnesinin bir yöntemidir ve tarayıcıya farklı bir URL'ye bağlanmasını sağlayan bir mesaj gönderir. Bir kullanıcıyı bir sayfadan diğerine aktarmak için hem Server.Transfer hem de Response.Redirect kullanılabilse de, bu görevi gerçekte nasıl gerçekleştirdikleri farklıdır..
Response.Redirect nedir?
Yönlendirme, Response nesnesindeki bir yöntemdir. Yanıt yöntemi çağrıldığında, HTTP2 kodunu ve istenen web sayfasının URL'sini kullanıcıların tarayıcısına gönderir. 302 HTTP kodu, kullanıcıların tarayıcısına istenen kaynağın farklı bir URL altında bulunduğunu bildirir. Tarayıcı kodu aldığında, kaynağı yeni konumda açar. İstenen web sayfası, isteği içeren sayfayla aynı sunucuda bulunabilir veya başka bir sunucuda bulunabilir. Geçerli sayfayla aynı sunucuda bulunan bir web sayfası istendiğinde, Yanıt yöntemi aşağıdaki gibi kullanılabilir:
Response.Redirect ( “nextPage.html”);
Başka bir sunucuda bulunan bir web sayfası istendiğinde, Yanıt yöntemi aşağıdaki gibi kullanılabilir:
Response.Redirect ( “http://www.newServer.com/newPage.aspx”);
Server.Transfer nedir?
Daha önce de belirtildiği gibi, Aktarım Sunucu Nesnesinin bir yöntemidir. Aktarma yöntemi çağrıldığında, orijinal istek aynı sunucudaki başka bir sayfaya aktarılmak üzere değiştirilir. Server.Transfer kullanılarak yeni bir sayfa istendiğinde, kullanıcıların web tarayıcısında gösterilen URL değişmez. Bunun nedeni, aktarımın sunucu tarafında gerçekleşmesi ve tarayıcının aktarım hakkında herhangi bir bilgisinin olmamasıdır. Server.Transfer için ikinci aşırı yük (dize yolu, bool preserveForm) kullanılarak ve ikinci parametrenin true olarak ayarlanmasıyla, yayınlanan form değişkenleri ve sorgu dizeleri ikinci sayfaya erişilebilir hale getirilebilir.
Server.Transfer ve Response.Redirect arasındaki fark nedir?
Bir kullanıcıyı bir sayfadan diğerine aktarmak için hem Server.Transfer hem de Response.Redirect kullanılabilse de, iki yöntem arasında bazı farklılıklar vardır. Görünen sözdizimsel farkın yanı sıra Response.Redirect sunucuya bir gidiş dönüş yaparken, Server.Transfer web sunucusunun odağını farklı bir web sayfasına değiştirir. Bu nedenle, Server.Transfer kullanarak, sunucu kaynakları korunabilir. Diğer taraftan Response.Redirect, kullanıcıyı başka bir sunucudaki bir web sayfasına yönlendirmek için kullanılabilirken, Server.Transfer yalnızca kullanıcıyı aynı sunucudaki web sayfalarına yönlendirmek için kullanılabilir. Ayrıca Server.Transfer kullanarak önceki sayfanın özelliklerine yeni sayfadan erişilebilir, ancak Response.Redirect ile bu mümkün değildir. Ayrıca, Response.Redirect, yeni sayfaya erişildiğinde ancak Server'ı kullanırken tarayıcının adres çubuğundaki URL'yi değiştirir. Aktarılan orijinal URL korunur ve sayfanın içeriği değiştirilir. Böylece kullanıcı yeni sayfayı yer imlerine eklemek için kullanamaz.