8

我有一个 ASP.NET MVC 4 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">

根据这里的答案,我也添加了这一行,这似乎并没有解决问题:

<machineKey validationKey="AutoGenerate,IsolateApps" decryptionKey="AutoGenerate,IsolateApps"></machineKey>

关于问题可能是什么以及我可以做些什么来解决问题的任何想法?

4

2 回答 2

2

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

于 2016-08-21T04:09:59.587 回答
0

我在 web.config 的身份验证超时中将超时设置为 2880,并且我还在关闭 system.web 之前设置了 sessionState

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

这将使会话保持活动状态 24 小时。

于 2013-04-30T20:02:46.863 回答