[英]Session timeout in ASP.NET
我正在 IIS 6.0 中運行 ASP.NET 2.0 應用程序。 我希望會話超時為 60 分鍾,而不是默認的 20 分鍾。 我做了以下
web.config
設置<sessionState timeout="60"></sessionState>
。我仍然在 20 分鍾時收到會話超時。 還有什么我需要做的嗎?
您在使用表單身份驗證嗎?
表單身份驗證使用它自己的超時值(默認為 30 分鍾)。 表單身份驗證超時會將用戶發送到會話仍處於活動狀態的登錄頁面。 這可能看起來像您的應用程序在會話超時時提供的行為,很容易將一個與另一個混淆。
<system.web>
<authentication mode="Forms">
<forms timeout="50"/>
</authentication>
<sessionState timeout="60" />
</system.web>
將表單超時設置為小於會話超時可以為用戶提供一個窗口,在該窗口中可以重新登錄而不會丟失任何會話數據。
我不知道 web.config 或 IIS。 但我相信從 C# 代碼你可以做到
Session.Timeout = 60; // 60 is number of minutes
在 web.config 文件中使用以下代碼塊。 這里默認的會話超時是 80 分鍾。
<system.web>
<sessionState mode="InProc" cookieless="false" timeout="80" />
</system.web>
使用以下鏈接獲取帶有彈出警報消息的會話超時。
僅供參考:以上示例是使用 devexpress 彈出控件完成的,因此您需要使用普通彈出控件自定義/替換 devexpress 彈出控件。 如果您使用 devexpress 無需自定義
在我的情況下,它是應用程序池。 設置為空閑 xx 分鍾時重新啟動。 當我將它設置為不重啟時,它似乎使用了 Web Config 中的值。
您在 machine.config 中是否有任何可能生效的內容? 在 web.config 中設置會話超時應該會覆蓋 IIS 或 machine.config 中的任何設置,但是,如果您在應用程序的子文件夾中的某個位置有 web.config 文件,則該設置將覆蓋應用程序根目錄中的設置。
另外,如果我沒記錯的話,IIS 中的超時僅影響 .asp 頁面,而不影響 .aspx。 您確定 web.config 中的會話代碼正確嗎? 它應該看起來像:
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
stateNetworkTimeout="60"
sqlConnectionString="data source=127.0.0.1;Integrated Security=SSPI"
cookieless="false"
timeout="60"
/>
https://usefulaspandcsharp.wordpress.com/tag/session-timeout/
<authentication mode="Forms">
<forms loginUrl="Login.aspx" name=".ASPXFORMSAUTH" timeout="60" slidingExpiration="true" />
</authentication>
<sessionState mode="InProc" timeout="60" />
如果您使用身份驗證,我建議在 web.config 文件中添加以下內容。
在我的情況下,用戶在超時時被重定向到登錄頁面:
<authentication mode="Forms">
<forms defaultUrl="Login.aspx" timeout="120"/>
</authentication>
由於 ASP.Net 核心 1.0(vNext 或用於它的任何名稱)會話的實現方式不同。 我更改了Startup.cs
的會話超時值,使用以下方法void ConfigureServices
:
services.AddSession(options => options.IdleTimeout = TimeSpan.FromSeconds(42));
或者,如果您想使用appsettings.json
文件,您可以執行以下操作:
// Appsettings.json
"SessionOptions": {
"IdleTimeout": "00:30:00"
}
// Startup.cs
services.AddSession(options => options.IdleTimeout = TimeSpan.Parse(Config.GetSection("SessionOptions")["IdleTimeout"]));
IIS 會話超時值僅適用於經典 .asp 應用程序,這由 IIS 配置控制。 在您的情況下,對於 ASP.NET 應用程序,僅適用 web.config 指定的超時值。
如果您想要網站的會話超時而不是刪除
<authentication mode="Forms">
<forms timeout="50"/>
</authentication>
web.config 文件中的標記。
Timeout 屬性指定分配給應用程序的 Session 對象的超時期限,以分鍾為單位。 如果用戶在超時期限內沒有刷新或請求頁面,則會話結束。
IIS 6.0:允許的最小值為 1 分鍾,最大值為 1440 分鍾。
Session.Timeout = 600;
在 IIS 中更改會話超時值后,請重新啟動 IIS。 為此,請轉到命令提示符。 鍵入 IISRESET 並按回車鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.