2015-12-30 213 views
0

我已經看到像我這樣的其他問題,但他們不完全像我的。我通過在web.config文件中的以下條目使用標準的ASP.NET驗證:ASP.NET會話超時提前

<authentication mode="Forms"> 
    <forms name=".ASPXAUTH" loginUrl="login.aspx" timeout="3600" /> 
</authentication> 

login.aspx.cs

accountID = myReader["AccountID"].ToString(); 
Session["AccountID"] = accountID; 

我用1和5的值測試這一點,它的工作方式應該如此。將其設置爲3600並保留半小時,並在重新加載頁面時過期並重定向到登錄。我閱讀了有關IIS會話狀態設置的信息。在我嘗試了1分5分鐘之前,我禁用了它,它似乎工作。只是不能長時間工作。原本IIS被設置爲正在處理中,模式是使用cookie,超時時間爲20分鐘。將其更改爲3600以匹配web.config,並且它太早超時。禁用它,它適用於短時間間隔,看起來不到30分鐘。

當我在IIS中更改這些設置時,是否需要執行IIS重置?那麼當我認爲它被禁用時,這個設置是否仍然在20分鐘?這幾乎看起來就是它的表現。

+1

會話超時從<的sessionState模式= 「是InProc」 customProvider = 「DefaultSessionProvider」 超時= 「20」>導出的;更改超時值爲60,並嘗試 – techspider

+0

我認爲你混淆了ASP.NET表單身份驗證和ASP.NET會話。這些是完全不同的概念。 –

+0

都正確的評論。我聘請了一個人創建認證系統和登錄,因爲我沒有時間親自查看。不知道他們做對了。 – user192632

回答

1

在表格標籤刪除您的超時值,並添加會話超時Web.config中

<sessionState mode="InProc" customProvider="DefaultSessionProvider" timeout="20"> 
    <providers> 
    <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" /> 
    </providers> 
</sessionState> 
+0

嗨,謝謝你的回答。我需要所有這些還是會有這樣的工作? user192632

+0

它應該工作; sessionState中的超時值在分鐘 – techspider

+0

好的謝謝。不幸的是,測試需要一點時間。我認爲它會起作用,而且我會在做出答案時將其標記出來。 – user192632