2011-02-09 32 views
3

我在我的一個ASP.net應用程序中有一個有線場景。ASP.NET Session TimeOut問題

我使用ASP.net成員與我自定義「roleManager」,

的並具有下在web.config中的標籤來限制任何用戶不必訪問「關鍵詞」(「關鍵詞」(角色)的角色路徑)文件夾

<location path="Keywords"> 

<system.web> 

<authorization> 

<allow roles="Keywords"/> 

<deny users="*" /> 

</authorization> 

</system.web> 

</location> 

如果與其他一些角色的任何用戶允許評估這個URL(關鍵詞在這種情況下)將被重定向到一個定做拒絕訪問頁面。

現在事情工作正常,但當我離開我的應用程序與30分鐘的不活動時,我無法訪問「關鍵字」,所有時間我最終與自定義訪問被拒絕的頁面,如果我關閉瀏覽器,再次登錄它開始工作正常。

請在這種情況下幫助我。

在此先感謝

+0

你跟FormsAuthentication登錄?如果是這樣,你是否檢查過該cookie是爲用戶重新加載的? http://msdn.microsoft.com/en-us/library/system.web.security.formsauthentication.aspx – 2011-02-09 11:56:41

回答

2

默認情況下,ASP.NET會話20分鐘後超時,我想。

您可以通過在Web.config中指定一個較長的時間(以分鐘爲單位)擴展這個:

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

如果您通過表單驗證,你應提高驗證cookie超時值相匹配。另外請記住,在IIS下運行站點時,您應該將應用程序池的閒置timout擴展爲類似的東西。如果您不這樣做,則ASP.NET站點的HttpApplication實例將被卸載,從而破壞進程中的任何活動會話。

+0

我已經添加了另外I在我的webconfig中的元素中設置了timeout =「365」。所有工作正常,但當我打開會話超過30分鐘時,它允許我訪問那些在位置標記中設置了<拒絕用戶=「*」/>的頁面,但是當我嘗試設置<拒絕用戶=「時, ?」 />它工作正常。我需要 bcos它會限制任何用戶沒有角色到我的文件夾。 – 2011-02-09 12:32:21

0

通常情況下,要做的第一和最簡單的事情了configuration/system.web/[email protected]值只是更改爲類似「90後「

<sessionState timeout="90" /> 

仍出現20後超時分鐘。 * 這沒有任何意義,它明確表示會話超時應該恰好是90分鐘。 *

有幾個問題是綁在這裏彙集:

  1. 應用程序池的工作進程默認的超時時間也 設置爲20分鐘
  2. 的存儲會話狀態是在默認模式下IIS進程

應用程序池的設置可以通過單擊應用程序所在的應用程序池上的屬性(IIS 6)或高級設置(IIS 7.5)來找到 分配給。

確保「空閒超時(分鐘)」的值設置爲會話超時(至少爲90),以確保所有會話在整個會話超時期間內保持不變。

嘗試這種解決方案,如果仍然有問題請參考本文它告訴更多的選項來嘗試

http://asp-net.vexedlogic.com/2012/05/23/aspasp-net-session-timeout-how-do-i-change-it/