我在 IIS 6.0中运行 ASP.NET 2.0应用程序。我希望会话超时为60分钟,而不是默认的20分钟。我已经做了以下事情
<sessionState timeout="60"></sessionState>
web.config
我仍然有20分钟的休息时间,还有什么需要我做的吗?
这通常就是你需要做的。
您确定在20分钟后,会话丢失的原因是由于空闲..。
会话可能被清除的原因有很多。您可以为 IIS 启用事件日志记录,然后可以使用事件查看器查看会话被清除的原因... ... 您可能会发现它是出于其他原因?
您还可以读取 事件消息的文档和相关的 事件表。
我不知道 web.config 或 IIS。 但是我相信通过 C # 代码你可以这样做
Session.Timeout = 60; // 60 is number of minutes
在 machine.config 中有可能生效的东西吗?在 web.config 中设置会话超时应该覆盖 IIS 或 machine.config 中的任何设置,但是,如果在应用程序的子文件夹中有一个 web.config 文件,该设置将覆盖应用程序根目录中的设置。
另外,如果我没记错的话,IIS 中的超时仅影响。ASP 页面,没有。阿斯伯格综合症。您确定 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" />
是否使用窗体身份验证?
Forms 身份验证使用它自己的超时值(30分钟)。默认情况下)。窗体身份验证超时将把用户发送到会话仍处于活动状态的登录页面。这可能看起来像是当会话超时时应用程序给出的行为,这使得它很容易混淆其中一个。
<system.web> <authentication mode="Forms"> <forms timeout="50"/> </authentication> <sessionState timeout="60" /> </system.web>
将窗体超时设置为小于会话超时的值,可以为用户提供一个窗口,用于在不丢失任何会话数据的情况下重新登录。
更改 IIS 中的会话超时值后,请重新启动 IIS。 要实现这一点,请转到命令提示符。键入 IISRESET 并按回车键。
在 web.config 文件中使用以下代码块。 这里的默认会话超时时间为80分钟。
<system.web> <sessionState mode="InProc" cookieless="false" timeout="80" /> </system.web>
对于带有弹出警报消息的会话超时,请使用以下链接。
会话超时示例
仅供参考: 上面的例子是使用 devExpresspopup 控件完成的,因此您需要用普通的 popup 控件定制/替换 devExpresspopup 控件。如果您使用 devExpress 不需要自定义
如果您正在使用 Authentication,我建议在 web.config 文件中添加以下内容。
在我的例子中,用户在超时后会被重定向到登录页面:
<authentication mode="Forms"> <forms defaultUrl="Login.aspx" timeout="120"/> </authentication>
在我的情况下,它是应用程序池。它被设置为在 xx 分钟空闲时重新启动。当我将它设置为不重新启动时,它似乎使用了来自 WebConfig 的值。
如果你想为网站会话超时比删除
<authentication mode="Forms"> <forms timeout="50"/> </authentication>
来自 web.config 文件的标记。
由于 ASP.Net 核心1.0(使用 vNext 或其他名称)会话的实现方式不同。 我使用以下方法更改了 Startup.cs和 void ConfigureServices中的会话超时值:
Startup.cs
void ConfigureServices
services.AddSession(options => options.IdleTimeout = TimeSpan.FromSeconds(42));
或者,如果你想使用 appsettings.json文件,你可以这样做:
appsettings.json
// Appsettings.json "SessionOptions": { "IdleTimeout": "00:30:00" } // Startup.cs services.AddSession(options => options.IdleTimeout = TimeSpan.Parse(Config.GetSection("SessionOptions")["IdleTimeout"]));
Timeout 属性指定分配给应用程序的 Session 对象的超时时间(以分钟为单位)。如果用户没有在超时期限内刷新或请求页,则会话结束。
IIS6.0: 允许的最小值为1分钟,最大值为 1440分钟。
Session.Timeout = 600;
IIS 会话超时值只适用于经典.asp 应用程序,这是在 IIS 配置上控制的。 对于 ASP.NET 应用程序,只应用 web.config 指定的超时值。
您可以在 IIS 中找到这个设置:
它可以在服务器级别,网站级别,或应用程序级别下的“ ASP”。
我想你可以在这里把它设置为 web.config 级别,请自己确认一下。
<configuration> <system.web> <!-- Session Timeout in Minutes (Also in Global.asax) --> <sessionState timeout="1440"/> </system.web> </configuration>
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" />
默认会话超时在 IIS 中定义为20分钟
对于托管在 IIS8.5 Web 上的每个站点,请遵循以下步骤
打开 IIS8.5管理器。 单击网站名称。 在“管理”部分选择“配置编辑器”。 来自配置顶部的“ Section:”下拉列表 编辑器,定位“ system.web/sessionState”。 使用最低值将“ timeout”设置为“00:20:00 or less” 视乎应用程式而定,可接受的数值为5 高价值的申请需时10分钟,中等价值的申请需时10分钟 应用程序,以及20分钟的低价值应用程序。 在“操作”面板中,单击“应用”。
打开 IIS8.5管理器。
单击网站名称。
在“管理”部分选择“配置编辑器”。
来自配置顶部的“ Section:”下拉列表 编辑器,定位“ system.web/sessionState”。
使用最低值将“ timeout”设置为“00:20:00 or less” 视乎应用程式而定,可接受的数值为5 高价值的申请需时10分钟,中等价值的申请需时10分钟 应用程序,以及20分钟的低价值应用程序。
在“操作”面板中,单击“应用”。