Server.Transfer 和 Response.Redirect 以及Server.Execute

 Server.Transfer 是在伺服器上請求,不會要求瀏覽器一個新的http連線,因此可以減輕伺服器的負擔。

並且Transfer可以隱藏網址。

Server.Transfer只能導向自己的Web站台,導向外部站台會產生error。

Server.Transfer可以獲取來源網站的控制項。

Server.Transfer("目標網址",true);

後面的true或false 是是否要保留資訊到目標頁。


參考:https://dotblogs.com.tw/atowngit/2010/07/20/16648


傳值的方法

1.Response.Redirect

直接下一個http Request出去

Request("string");

Request.QueryString("string");

連接速度不算快,因為要來回兩次(客戶端 客戶端回應 跳轉目標 跳轉目標回應)

跳轉方法首先是先丟一個http requset給客戶端,通知要跳轉到新頁面,然後客戶端再傳送跳轉請求給伺服器端。

跳轉後所有資料都會丟失,不保存,因此需要Session

2.Server Transfer

將目前表單內容傳輸給指定的表單,可以夾帶的訊息量較多,只能傳輸到自己專案內容內

Request("string");

Request.Form("string");

速度相對快,因為只來回一次,但是只能在同一個站點的網頁下進行。

網址不變,但是實務上通常都會使用HttpContext.RewritePath()來做URL的Rewirting

3.Server.Execute

和Transfer很像,差別在於Transfer轉入XX.aspx做完後不會回來繼續執行,Execute會取得執行完的資料後回到原本的aspx繼續執行

通常用於將一個頁面所完成的事情插入原本的頁面進行動作。

4.Session["name"];

作用對於單一用戶。

避免使用太多Session,導致內存耗盡

Session["name"].ToString();

5.Cookie對象變量

HttpCookie cookie_name = new HttpCookie("name");

cookie_name.Value = xxxx;

Response.AppendCookie(cookie_name);

Server.Transfer("xx.aspx");

xx.aspx >

string name = Request.Cookie["name"].value.ToString();


較項Response.Redirect()Server.Transfer()Server.Execute()
目的地可以切換到任何的網頁只能切換到同目錄或子目錄的網頁同Transfer()
安全性url會變成你所指向的新網頁url不變,隱藏了新網頁的url及附帶的參數值同Transfer()
傳遞容量受各瀏覽器的網址欄位長度限制(含傳遞引數)同Transfer()
連接伺服器來回伺服器兩次,故較受網路連線品質影響。僅來回伺服器僅一次,於伺服器內進行轉址的動作。同Transfer()


參考:

https://ithelp.ithome.com.tw/articles/10219006

https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/225144/

留言

這個網誌中的熱門文章

無法載入檔案或組件 'System.IO.Compression' 或其相依性的其中之一。

MongoDB 入門

javascript 更改屬性及創建標籤