6

我有一个ASP.NET MVC 4 Web应用程序。在本地运行,它可以正常工作,但在Web主机上(使用共享主机),登录用户会被重定向回主页而频繁登出。在大多数情况下,用户在执行一些操作后即被注销。ASP.NET MVC成员资格 - 用户经常注销 - 不知道为什么

网络主机建议我的应用程序可能会占用太多的内存,但我用一个程序来分析内存使用情况,并确认它没有使用过多的内存 - 实际上应用程序似乎使用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> 

任何想法,以什么问题可能是什么,我可以做什么来解决这个问题?

回答

1

您的会话不会超时。 IIS正在崩溃。由于您在内存会话中使用,每次IIS崩溃时,您的会话都会消失,用户会注销。您应该检查服务器的事件视图并查看错误的详细信息以找出错误。

0

我在web.config中的身份验证超时我的超时设置为2880,我关闭的System.Web

<sessionState timeout="1440"></sessionState> 

这将保持会话使用24小时,然后还要设置的sessionState。

+2

我目前都设置为60,我的理解是60分钟,这应该足够多了。我把超时值增加到了一个更大的数字,看看这是否会产生任何影响......但事实并非如此。 – 2013-04-30 20:23:19

+0

它超时之前有多久,还是似乎来自特定页面或控制器? – 2013-04-30 20:42:43

+0

我想说,用户会话保持有效期不超过1或2分钟...有时更多,有时更少。这似乎无关紧要哪个控制器被调用。 – 2013-04-30 21:31:41