簡體   English   中英

asp.net會話超時同一頁面

[英]asp.net session time out same page

我正在使用asp.net,但是我對此很陌生。 我的經理給了我一個調試asp.net系統的任務。 該系統的問題之一是,當用戶長時間嘗試在文本框中輸入詳細信息時,會話將超時,最終所有用戶尚未完成鍵入的單詞都將消失。 因此,當用戶登錄時,他們必須再次鍵入所有單詞。

所以我想問問有什么辦法可以在會話超時之前臨時保存文本嗎? 然后,當會話超時后用戶登錄時,系統將直接返回到用戶未完成寫入的頁面。 謝謝,抱歉英語不好。

更改設置您的web.config頁面

<system.web>
    <sessionState timeout="480" />
</system.web>

在web.config中使用超時,默認情況下還可以使用timespan--20分鍾,對於進程內和狀態服務器模式,timeout屬性也不能設置為大於525,601分鍾(1年)的值。

<sessionState 
    mode="[Off|InProc|StateServer|SQLServer|Custom]"
    timeout="number of minutes"............

   ....../>

您可以按照這種方法來保存用戶,以免用戶在重新登錄后再次鍵入相同的信息

  1. 使用計時器將頁面控件值保存到數據表
protected void Page_Load(object sender, EventArgs e)
    {

    System.Timers.Timer aTimer = new System.Timers.Timer();
    aTimer.Elapsed+=new ElapsedEventHandler(OnTimedEvent);
    aTimer.Interval=600000;//10 min timer
    aTimer.Enabled=true;
}


DataTable table = new DataTable();
    private static void OnTimedEvent(object source, ElapsedEventArgs e)
     {
        // code to save data in datatable;
       //like
    table.Clear();//Refresh the table
    table.Columns.Add("name", typeof(string));//No need to create column again and again.As i am doing here :|
    table.Rows.Add(TextBox1.Text);//This is just sample code
     }

每10分鍾執行完這些代碼行后,您的數據將保存在datatable中。 您也可以使用相同的數據表將數據保存在數據庫中。

  1. 超時后,您的頁面將被重定向到登錄頁面或其他頁面。 現在最棘手的部分是,當您重新登錄頁面加載事件時,只需檢查數據表是否包含任何行(如果是),則只需從數據表中獲取數據並再次用數據填充控件即可。意味着它是全新的登錄名,無需執行任何操作!
protected void Page_Load(object sender, EventArgs e)
            {
                if(table!=null)
                if(table .Rows.Count>0)
                {
                   Textbox1.Text=table.Row[0][0].ToString();//In this way you can fill controls again
//And user need not to type data again!! 


   }
                 }

因此,即使超時后,您也可以保留用戶輸入的數據。

為了了解數據表,您可以點擊此鏈接數據表

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM