ASP.NET MVC 4会话在Windows Azure上10分钟后过期
本文关键字:Azure 10分钟 过期 Windows NET MVC 会话 ASP | 更新日期: 2023-09-27 18:26:26
我目前正在使用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分钟就被击倒一次。还有什么我可以检查的吗,或者可能是原因?
提前感谢
编辑:我正在使用windowsazure网站,目前正在免费试用订阅。
可能是由于IIS应用程序池回收。这取决于应用程序池的配置(标准IIS的默认值为20分钟的空闲超时,每1740分钟一次,无论池是否空闲),但windows azure网站则不同:
https://www.simple-talk.com/dotnet/.net-framework/windows-azure-websites-%E2%80%93-一种用于windows的新模式-azure/
空闲超时时间可能会有相当大的波动。目前超时时间大约从20分钟开始,但之后可以是短至5分钟。现在,你可能会想,"哇!我的网站可能即使只有5分钟的空闲时间也会被取下?"是的,那是相当短的时间;然而,空闲时间的原因波动是处理伴随而来的资源管理被托管在共享系统中。
为了避免这种行为,您可以尝试定期ping您的站点,或者使用不同的会话模式,如SQL Server会话或State Server模式。或者根本不使用会话,而是使用一些客户端存储机制,如cookie或本地存储(我更喜欢这个选项)。