我目前正在使用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网站,当前正在免费试用订阅上。
可能是由于IIS应用程序池回收。这取决于应用程序池配置(标准IIS的默认值为20分钟(空闲超时),每1740分钟为默认值,无论该池是否空闲),但是Windows Azure网站却是另一回事:
空闲超时时间可能会波动很大。目前,超时时间从20分钟左右开始,但是可能只有5分钟。现在,您可能会想,“哇!即使只有5分钟的空闲时间,我的网站也可能会被关闭?” 是的,那是很短的时间;但是,空闲时间波动的原因是为了处理托管在共享系统中的资源管理。
为了避免这种现象,您可以尝试定期对站点进行ping操作或使用其他会话模式(例如SQL Server会话或状态服务器模式)。或者根本不使用会话,而是使用某些客户端存储机制,例如cookie或本地存储(我希望使用此选项)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句