我有一个ASP.NET MVC 4 Web应用程序。在本地运行,它工作正常,但在Web主机(使用共享主机)上,登录用户经常被重定向回主页注销。在大多数情况下,用户仅在执行少量操作后才会注销。
Web主机建议我的应用程序可能耗尽了太多内存,但我使用了一个程序来分析内存使用情况,我确认它没有使用过多的内存 - 实际上应用程序似乎使用了一小部分内存Web主机上分配的内存。
以下是使用的登录方法:
public static Boolean Login(string Username, string Password, bool persistCookie = false)
{
bool success = Membership.ValidateUser(Username, Password);
if (success)
{
FormsAuthentication.SetAuthCookie(Username, persistCookie);
}
return success;
}
在我的网络主机中,表单身份验证超时设置为60分钟,因此不应该是一个问题,对吧?
<authentication mode="Forms">
<forms loginUrl="~/Account/Login" timeout="60" />
</authentication>
并且我的会话状态超时值也设置为60分钟:
<sessionState mode="InProc" customProvider="DefaultSessionProvider" timeout="60">
根据答案here,我也添加了这一行,似乎没有解决问题:
<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps"></machineKey>
对问题可能是什么以及我可以做些什么来解决问题的任何想法?
答案 0 :(得分:2)
您的会话没有超时。 IIS崩溃了。由于您在内存会话中使用,因此每次IIS崩溃时,您的会话都会消失,用户将被注销。您应该检查服务器的事件视图并查看错误的详细信息,以找出错误是什么。
答案 1 :(得分:0)
我在web.config的身份验证超时中将超时设置为2880,并且在关闭system.web之前还设置了sessionState
<sessionState timeout="1440"></sessionState>
这将使会话保持活动24小时。