【问题标题】:ASP.NET MVC 4 sessions expiring after 10 min on Windows AzureASP.NET MVC 4 会话在 Windows Azure 上 10 分钟后到期
【发布时间】:2014-12-08 15:14:32
【问题描述】:

我目前正在使用 ASP.net 和 MVC4 构建网站。在本地调试时,会话按预期工作,没有任何问题,并在登录后 1 天过期。但是在实时站点上,会话每 10 分钟过期一次,这变得很烦人。

这是网络配置

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

 <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="1440"/>      
    </authentication>

这是控制器的登录方法。

public ActionResult LogIn(UserModel user)
    {
        var response = new RegistrationResponse();

        if (ModelState.IsValid)
        {
            var authUser = usersManager.IsValid(user);
            if (authUser != null)
            {
                FormsAuthentication.SetAuthCookie(user.Email, false);
                response.Authenticated = true;
                if (authUser.isAdmin)
                {
                    System.Web.HttpContext.Current.Session["Admin"] = true;
                }

                var cart = (ShoppingCart)System.Web.HttpContext.Current.Session["ShoppingCart"];

                System.Web.HttpContext.Current.Session["ShoppingCart"] = new ShoppingCart(authUser.UserId, cart.Items);
                System.Web.HttpContext.Current.Session["User"] = authUser.UserId;

                return Json("/Home");
            }
        }
        string errorMessage = "Your Email and/or Password could not be found.\n Please double check credentials and try again.";
        return Json("/Home/Login?errorMessage=" + errorMessage);
    }

我已检查 FTP 以确保 web.config 在实时站点上是最新的。但是,我仍然每 10 分钟就会被击倒。还有什么我可以检查的,或者可能是原因吗?

提前致谢

编辑:我正在使用 windows azure 网站,目前正在免费试用订阅。

【问题讨论】:

  • 是什么让您认为会话即将到期?
  • 啊,谢谢。以确保我理解正确。 Azure 是无状态的,不支持本地存储?
  • 能否请您编辑您的问题,说明您的部署方式(虚拟机、云服务、网站),如果是网站,是哪一层?
  • DavidG,用户被踢出站点,并被要求在 10 分钟后再次登录。这让我相信会话即将到期。

标签: c# asp.net asp.net-mvc asp.net-mvc-4 azure


【解决方案1】:

可能是由于 IIS 应用程序池回收。这取决于应用程序池配置(标准 IIS 的默认值是 20 分钟空闲超时,每 1740 分钟,无论池是否空闲),但 Windows azure 网站是另一回事:

https://www.simple-talk.com/dotnet/.net-framework/windows-azure-websites-%E2%80%93-a-new-hosting-model-for-windows-azure/

空闲超时时间可能会有很大的波动。目前, 超时时间从大约 20 分钟开始,但随后它可以是 短至 5 分钟。现在,你可能会想,“哇!我的网站可能 即使只有 5 分钟的空闲时间就被取下来了?”是的,这是一个 时间很短;但是,空闲时间的原因 波动是处理随之而来的资源管理 托管在共享系统中。

要避免这种行为,您可以尝试定期 ping 您的站点或使用不同的会话模式,如 SQL Server 会话或状态服务器模式。或者根本不使用会话,而是使用一些客户端存储机制,比如 cookie 或本地存储(我更喜欢这个选项)。

【讨论】:

  • 感谢您提供的信息。我会研究其他方法并感谢帮助,因为我的方法看起来不太可能。
猜你喜欢
  • 2013-06-15
  • 2015-04-15
  • 1970-01-01
  • 2013-01-06
  • 2011-06-04
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 2013-01-17
相关资源
最近更新 更多