![](/img/trans.png)
[英]What should i do if session logs out after “20” minutes in asp.net?
[英]How to stop session timeout after 20minutes in asp.net?
我正在使用iis6來部署我的應用程序。 無論我如何更改iis配置中的超時或我添加一個global.asax文件來設置Session.Timeout,甚至使用會話狀態,我仍然在20分鍾后獲得會話超時,這太瘋狂了! 有人請幫幫我嗎? 我很困惑..
web.config中:
<authentication mode="Forms">
<forms name="__authcookie" loginUrl="LoginPage.aspx" timeout="60" protection="All" requireSSL="false" slidingExpiration="true" cookieless="UseDeviceProfile" enableCrossAppRedirects="false"/>
</authentication>
<sessionState mode="InProc" timeout="60" customProvider="AppFabricCacheSessionStoreProvider"></sessionState>
<membership>
<providers>
<clear />
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear />
<add name="AppFabricCacheSessionStoreProvider" type="Microsoft.ApplicationServer.Caching.DataCacheSessionStoreProvider" cacheName="NamedCache1" sharedId="SharedApp"/>
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
</providers>
</profile>
在您的web.config文件中包含此內容:
使用web.config
<sessionState timeout="minutes"/>
使用IIS
在Internet服務管理器中更改以下超時。選擇大於默認值20的值。
選擇默認網站>屬性>主目錄>應用程序設置>配置>選項。
啟用會話狀態超時並將會話超時設置為60分鍾。
選擇“應用程序池”>“DefaultAppPool”>“屬性”。
在“空閑超時”下的“性能”選項卡中,在空閑時為高於20的值設置關閉工作進程。
IIS上的默認會話超時設置為20分鍾,但可以將其增加到最多24小時或1440分鍾。
我最近一直在努力解決這個問題。 似乎有很多地方你可以設置超時,但你的超時只會與設置最短的屬性一樣長。 以下是我發現的一些事情......
正如大家建議的那樣,檢查web.config文件中“ sessionState ”節點的“ timeout ”屬性。 可以直接在web.config文件中編輯此值,也可以通過@Romil上面描述的IIS配置編輯此值(盡管在更高版本的IIS中UI已更改,但設置類似)。
如果您正在實現Forms身份驗證,那么web.config文件中還定義了一個額外的超時設置。 在web.config中查找... system.web> authentication> forms節點,並將“ timeout ”屬性修改為所需的分鍾數。
這是我忽略的那個......在IIS中(肯定是7.5版,可能更早,但我無法確認)右鍵單擊關聯的應用程序池並選擇“ 高級設置 ”。 在“ 過程模型 ”標題下(必要時展開),查找“ 空閑超時(分鍾) ”設置。 將其設置為所需的超時(分鍾)。 - 說明: sessionState> timeout設置會影響將會話ID存儲在瀏覽器中的cookie過期,但此超時實際上決定了何時應關閉工作進程(尚未使用)。 一旦流程關閉,它就不再回憶現有的會話ID,因此瀏覽器cookie中的ID不再有用。
我希望這對那里的人有幫助。 這個問題讓我瘋狂了幾個小時,除了設置sessionState設置之外,我對這方面的信息很少感到驚訝。
祝你好運,G
Romil的答案確實有效,我的方式是我只更改應用程序的會話超時而不是空閑超時。 現在,在他展示的方式從20分鍾延伸到60分鍾之后,它的確有效!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.