我正在为体育俱乐部建立一个网站。俱乐部对将他们的托管移动到不同的网络主机不感兴趣,所以我坚持使用当前的主机。我将新的Web应用程序部署到主机上,但经过几个小时的测试后,显然有些事情在登录和会话状态方面表现得很奇怪。
每当我闲置超过10分钟时,我的MVC验证令牌会突然停止解密。我进入IIS并将机器密钥设置为静态值,这个问题消失了,但很明显他们将ASP.NET空闲超时设置设置为10分钟。这意味着如果网站上没有活动,则每10分钟InProc会话数据将被销毁。我向主机提交了一张支持票,但他们不愿意在我的应用程序池中为我更改该设置,并说“此时服务器上的设置无法更改,因为增加此设置可能会影响性能(原文如此)服务器“。
俱乐部有点小,俱乐部最多有500名成员,而且很少有会员经常访问该网站,所以我几乎可以保证10分钟超时将每天多次发生,而我将会话超时设置为60分钟,因此如果站点的唯一用户在给定时间闲置10分钟,则让站点清除会话不是一个好主意。
我的第一个想法是使用SQL会话存储。我从未使用它,但我知道它存在。但是,存在一个警告是我们仅限于350mb的SQL存储空间。虽然这可能不仅仅是网站现在需要的,但我想我们可能接近达到极限。我不期望在会话中存储大量数据,只需要与paypal和购物车交互时的一些事情(也许这里或那里也有系统消息),所以这可能不是一个大问题?
我们做拥有无限的磁盘空间,因此我想到的另一个选择是编写基于磁盘的自定义会话存储解决方案。有什么理由这可能不比SQL更好吗?
最后,我有一个完全不在墙上的“哦上帝,我不敢相信我正在考虑这样做”的想法,这将是定期在每个页面上进行AJAX调用(比方说,每8个分钟)“ping”一个非缓存的轻量级MVC动作只是为了让服务器保持活跃状态。我认为这可能会有效,除了某人的情况:
在这种情况下,我可能只是将购物车移动到数据库。
那么...想法,意见和建议?我真的很沮丧主持人不让我改变这个设置,我的第一直觉就是找到另一个主持人,但正如我之前所说,俱乐部对主持人有一些奇怪的依恋,并且不想移动到其他地方。
提前致谢!
答案 0 :(得分:1)
一些想法:
关于问题:会话在Load Balancing系统上“丢失”是很常见的。这可以通过移动到单个指定的服务器来修复(如果托管公司现在没有这样做并提供选项
Cookie会话:如果您使用的是.Net会员,则可以更改登录过程以使用Cookie。这附带明显的一些用户不允许cookie 陷阱。再考虑一下。目前正在学校网站上工作,他们希望用户保持登录状态。
**使用Cookies,您的登录信息是稳定的,但您的会话将不会更好。因此,在会话状态中,你的运气不足。
最终结果是您可以通过IP或Cookie跟踪用户,但除非这是一个可修复的负载平衡问题,否则您将转向无会话应用程序。