【轉載】C# 中Session的用法

來源:互聯網
上載者:User

標籤:

 C# 中對 Session 的“(string)”、“.ToString()”與“Convert.ToString”用法筆記

在實際操作當中,我們經常會遇到將 Session 的值轉為 String 去判斷是否為空白或者判斷是否有許可權訪問某頁,這裡的轉換過程如果用得不恰當會拋出異常,給訪問者帶來不好的使用者體驗。這裡我把它寫成筆記,以供參考。

一、當 Session["a"] == null 時,

Session["a"].ToString() 拋出異常;

(string)Session["a"] 為 null;

Convert.ToString(Session["a"]) 為 ""。

二、當 Session["a"] == "" 時,

它們的值都為 ""。

所以,在判斷 Session["a"] 是否有值時,如果用“.ToString()”,那麼必需按照下面的格式與順序寫:

if (Session["a"] != null && Session["a"].ToString() != "")

在這裡,要注意判斷的順序:先判斷是否為 null,再判斷是否為 empty。如果 Session["a"] 為 null,則 Session["a"] != null 為 false 自然不會執行 .ToString(),也就不會報錯;如果 Session["a"] 不為 null,則執行 .ToString() 也不會報錯。

同理 if (Session["a"] == null || Session["a"].ToString() == "") 此句也合法可用。

用 .ToString() 的方法寫格式比較固定,如果換成用 (string) 寫,會比較自由:

if ((string)Session["a"] != null && (string)Session["a"] != "")

if (Session["a"] != null && (string)Session["a"] != "")

這兩種寫法都是可行的,而且對 null 和 empty 的判斷順序沒有關係。

最簡單的方法就是用 Convert.ToString

if (Convert.ToString(Session["aaa"]) == "")

不管 Session["a"] 為 null 還是 empty,Convert.ToString(Session["aaa"]) 都是 empty。

session有效時間預設為20分鐘,內容來自中國站長資訊網(www.chinahtml.com)這個時間是指,當使用者登入後,如果沒有任何動作,即不在web上有請求.將維持這個使用者的身份有效時間是20分鐘,如果這個使用者一直與web有請求操作,那麼,這個時間一直沒有算在20分鐘內,即,如果使用者登入後,即便操作一個小時,那麼也不會出現逾時,除非使用者與伺服器之間掉線

Web.config檔案中的Session配置資訊

mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/>

使用Session對象在頁面之間傳值

使用Session對象可以在頁面之間傳值,但是需要注意的是不能在Session對象中儲存過多的資料,否則伺服器會不堪重負,另外當不再需要seesion對象時,應及時釋放該對象。

例如,使用Session對象來傳送使用者的登入名稱,在另一頁中,將使用者的登入名稱顯示出來。

使用Session對象儲存使用者登入名稱的代碼如下:

Session.Remove("UserName");
Session["UserName"] = txtName.Text;
Response.Redirect("NavigatePage.aspx");

在NavigatePage.aspx頁面中,將Session對象的值顯示在介面上,其代碼如下:

if (Session["UserName"] == null)
{
Response.Redirect("Default.aspx");
}
else
{
Label1.Text =Session["UserName"].ToString();
}

使用Session驗證使用者登入

在ASP.NET中,利用Session對象驗證使用者是否登入的方法很簡單,例如在本執行個體中,當使用者安全登入時,可以利用如下代碼儲存使用者的登入名稱,並跳轉到NavigatePage.aspx中。

if (txtName.Text == "mr" && txtPassword.Text == "mrsoft")
{
Session["UserName"] = txtName.Text.Trim();
Response.Redirect("NavigatePage.aspx");
}

在NavigatePage.aspx頁面中,當頁面載入時,首先判斷Session對象中是否有值,如果有值,則進行其他動作;否則,則返回到登入頁中。其主要代碼如下:

if (Session["UserName"] == null)
Response.Redirect("Default.aspx");
else
{
//其他動作
}

注意:Session對象預設失效期為20分鐘,使用者也可以在Web.Config中對其進行設定,其代碼如下:



【轉載】C# 中Session的用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.