2011-06-23 36 views
1

對於你來說,最好的方法是什麼? 我希望我的應用程序的所有頁面都有20分鐘的超時,但是4.我希望這4個頁面有60分鐘的超時時間。修改某些頁面會話超時的最佳方法

什麼是最好的方法?是否將Session.timeout設置爲頁面的構造函數?有沒有其他方法?

感謝

+0

這些是網頁全部在一個目錄中?通過他們自己? – Oded

+0

這些頁面位於相同的目錄中,但與其他頁面混合在一起。 – bAN

回答

4

您可以創建一個自定義的基本頁面(即繼承自System.Web.UI.Page),設置在Page_Init處理程序會話超時,然後設置這四個網頁,從您的自定義基地繼承頁。這給你一個地方來管理會話超時值。

+0

謝謝,我正在考慮在構造函數中放置指令,但這是一個糟糕的主意,OnInit事件是最好的! :-) – bAN

1

您可以通過web.config中配置此:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <sessionState timeout="20"/> 
    <location path="Page1.aspx"> 
    <system.web> 
     <sessionState timeout="60"/> 
    </system.web> 
    </location> 
    <location path="Page2.aspx"> 
    <system.web> 
     <sessionState timeout="60"/> 
    </system.web> 
    </location> 
    <location path="Page3.aspx"> 
    <system.web> 
     <sessionState timeout="60"/> 
    </system.web> 
    </location> 
</configuration> 
1

一定要設置應用程序池空閒超時,以及:

http://weblogs.asp.net/aghausman/archive/2009/02/20/prevent-request-timeout-in-asp-net.aspx

根據該文檔,你可以隨時設置超時時間。當然,它必須在向服務器發送請求的時候! :-)

您可以實現自定義頁面的屬性,如:

using System; 
System.Web.SessionState; 

public class TimeoutControlPage: System.Web.UI.Page { 
    public int Timeout { 
     get { return Session.Timeout; }  
     set { Session.Timeout = value; } 
    } 

}

,然後下面的頁面另存爲 「Test.aspx文件」:

<%@ Page Language="C#" Timeout="60" Inherits="TimeoutControlPage" %> 

<html> 
    <body> 

    </body> 
</html> 
相關問題