一般而言HTTP協議是非狀態服務它不保存任何用戶請求信息直至NetScape開始使用Cookies來保存用戶請求信息Web應用程序有了極大的發展現在ASPNET程序員可以使用很多種方式來保存用戶請求信息
下面主要介紹ASPNET關於客戶端狀態管理的幾種方式
ASPNET提供了Cookies QueryStrings (URL) Hidden fields View State and Control state (ASPNET )來管理客戶端請求
一Cookie
Cookie是以文本存儲於計算機中使用namevalue匹配一般用戶存儲標識用戶信息如用戶名用戶使用配置等雖然Cookie可以被加密存儲但不推薦在Cookie中保存用戶密碼第二Cookie的大小是限定的所以不適合存儲大型數據
Example
獲取用戶ID
if (RequestCookies[UserId] != null)
lbMessagetext = Dear + RequestCookies[UserId]Value + Welcome to our website!;
else
lbMessagetext = Guestwelcome to our website!;
設置Cookie
ResponseCookies[UserId]Value=username;
優點
使用簡單
缺點
客戶端可以禁用Cookie
Cookie在每次請求或發送時都會被加載影響傳輸
易被攻破所有不適合存儲安全信息
二Hidden fields(隱藏控件)
Hidden field是在頁面級保存信息與其他用戶標准控件的區別是Hidden Field不被呈現在頁面中當頁面提交的時候Hidden Field中的值將被一同發送給服務端雖有在ASPNET 中我們可以使用ViewState來代替但Hidden Fields依然可以用來存放一些不關鍵信息
現在ASPNET程序員可以使用很多種方式來保存用戶請求信息下面主要介紹ASPNET關於狀態管理的幾種方式
protected SystemWebUIHtmlControlsHtmlInputHidden Hidden;
//to assign a value to Hidden field
HiddenValue=Create hidden fields;
//to retrieve a value
string str=HiddenValue;
優點
使用簡單
可以存儲少量數據
缺點
不安全以明文的形式直接從網絡傳輸
三View State(狀態視圖)
狀態視圖ViewSate可以用來為單獨用戶存儲信息你可以通過設置EnableViewState屬性來控制ViewState的使用在默認的情況下屬性值為TrueViewSate在每次用戶請求或服務端響應時都會被傳輸所以為了減少網絡帶寬的使用可以在不需要狀態視圖時設置EnableViewState屬性值為False
ViewSate在頁面中的存儲是經過Base轉碼的增加了額外的數據量所以一定要注意保存較少的ViewSate
// Add item to ViewState
ViewState[myviewstate] = myValue;
//Reading items from ViewState
ResponseWrite(ViewState[myviewstate]);
優點
操作簡單
被加密
可以在控件級別使用
缺點
加密編碼增加了頁面的大小
增價了網絡傳輸
From:http://tw.wingwit.com/Article/program/ASP/201311/21834.html