2014-03-05 157 views
4

我正在使用VS 2012,IIS 7.5開發一個帶有ASP.NET MVC4的Internet應用程序。我正在使用表單身份驗證。我的web配置中的設置如下。ASP.NET MVC 4會話超時

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="30" name="userInfo" slidingExpiration="true" enableCrossAppRedirects="false" protection="All" > 
    <credentials passwordFormat="Clear"/> 
    </forms> 
</authentication> 

但空閒超時(分鐘)在IIS中設置爲20。當我20多分鐘,我得到一個錯誤說我的會話對象之一爲空後刷新我的應用程序。但是如果在30分鐘後刷新我的應用程序,它工作正常,它將我重定向到登錄頁面。輸入憑證後,我會正確導航到適當的頁面。

我不理解爲什麼20分鐘後出現錯誤! (據我所知,這是IIS空閒時間設置)。請幫忙。

謝謝

+0

您是否正在使用服務器或SQL中保存的會話變量?機會是你的會議即將到期,但你的登錄仍然有效額外的10米,這就是爲什麼你沒有被重定向,直到30後 嘗試http://stackoverflow.com/questions/4605161/session-variables-timeout-in -asp-net-app – FGhilardi

回答

5

表單身份驗證不處理會話超時。您想要調整會話狀態超時。 MSDN有關於web.config的sessionState元素的文章以獲取更多詳細信息。

如果您打算使用會話狀態,我會閱讀不同的提供者。如果您想要將應用程序擴展到單個Web服務器之外,則需要使用不同於InProc的會話提供程序。使用進程外會話提供程序需要對象可序列化,這可能會在稍後發生突變。現在進行更改,以便以後節省自己的頭痛。

+1

我們將MV3移動到了4,現在我們的會話在連接5分鐘後超時了,有什麼想法? – MBen