Meh*_*eli 5 asp.net iis session-state
我的项目有问题.我的网站上有一个管理面板.人们可以使用用户名和密码登录,可以编辑网站内容.有时,用户最多可能需要30-40分钟才能输入内容,但会话超时仅在20分钟后过期.
我试图在其中配置web.config,例如:
<authentication mode="Windows"/>
<sessionState timeout="60" />
Run Code Online (Sandbox Code Playgroud)
和这样:
<system.web>
<sessionState timeout="60"></sessionState>
</system.web>
Run Code Online (Sandbox Code Playgroud)
并且还以我的形式尝试过:
if (ds.Tables["LOG"].Rows.Count > 0)
{
Session["IsLoggedIn"] = "true";
Session.Timeout = 60;
Response.Redirect("Default.aspx");
}
else
{
Label1.Text = "Username/Password is wrong!!";
}
Run Code Online (Sandbox Code Playgroud)
以上解决方案均无效.我分别和一起尝试了每个,但会议在20分钟后仍然过期.
Web*_*ing 13
另一个提示是查看您的IIS设置.当我不得不改变我的超时时,我不得不进行一些服务器端更改.检查应用程序池的空闲超时设置.如果站点空闲(我认为默认为5分钟),则应用程序池将关闭以节省服务器资源.这也会杀死一个会话.
尝试增加应用程序池的空闲超时,看看这是否有帮助.
IIS»目录»配置»选项和AppPool»属性
显然,如果您处于共享托管环境中,您很可能无法对此进行调整.
当您使用"InProc"(正在处理)的默认会话状态模式时,会话状态数据非常脆弱,并且每当AppPool回收时都会丢失.
考虑使用其他内置会话状态模式,这些模式在进程外运行,因此不受AppPool回收的影响.这些是"StateServer"模式(在单独的进程中在内存中运行)和"SqlServer"模式(存储在SQL Server DB中的状态数据).
您将需要使用这些进程外会话状态模式之一,以便为会话数据提供更强大的稳健性,尤其是在需要更长的会话超时时.这并不能解答您的会话过早超时的问题,但它将成为解决方案的一部分.
各种会话状态模式在稳健性,内存要求,可伸缩性和性能方面都有其优缺点,因此您需要熟悉它们,以便为您的应用程序确定正确的选择.
作为旁注,请始终考虑您的数据是否需要进入会话.如果数据量不是太多,在同一页面上的回发之间需要数据时,通常最好使用ViewState.完全有可能开发完全不使用Session的ASP.NET应用程序,或者非常谨慎地使用它,一般来说,当你不使用Session时,我会发现事情更直观.浏览器后退按钮.您的数据库可以保留您的数据,因此不要羞于使用它.如果您使用Session在页面之间传递表格或数据集,请考虑您是否真的需要.您可以通过查询字符串传递参数,然后在请求页面时使用参数从数据库中获取数据吗?
请参阅:MSDN会话状态模式
| 归档时间: |
|
| 查看次数: |
42521 次 |
| 最近记录: |