ASP.NET会话状态迁移

时间:2008-12-12 14:20:46

标签: asp.net session-state

我希望有人可以在我推荐我的客户端从30 / mo升级到80 / mo托管包之前验证我的假设。

网站:该网站是一个自定义的ASP.NET电子商务网站。购物车存储在inproc会话中。

在忙碌的季节

问题就像我们现在一样,用户经常丢失他们的购物车和他们的FormsAuthentication登录信息。

解决方案我想迁移网站以使用SQL Server会话状态。我的假设是客户正在丢失他们的购物车,因为InProc会话由于负载而比他们的20分钟超时更频繁地回收。将会话移动到SQL Server或会话状态服务器允许客户在没有回收的情况下存储他们的购物车会话,如果是这样的话,如果我将会话超时增加到40或60分钟,我可以一次他们的任何问题

3 个答案:

答案 0 :(得分:2)

使用SQL会话状态意味着会话应该在IIS的循环中继续存在(但如果使用在tempdb中创建会话数据库的默认脚本,则不是SQL Server的循环)。

Microsoft网站上提供了一个脚本,用于创建永久会话状态数据库。我建议使用那个(参见here)。

所以,基本上回答你的问题。是的,SQL Session状态会有所帮助。您可能还想考虑使用out-of-proc状态服务器来测试您的理论。

另外,正如同事刚刚提醒我的那样,请确保在迁移之前将会话中存储的任何内容标记为可序列化,否则会遇到问题。

答案 1 :(得分:1)

你能在盒子里添加一些内存吗?这可能有所帮助,并且可能比将会话移动到SQL Server更便宜,更简单。当然,它只是一个权宜之计,但如果它能在几年内节省50美元/月,那么它可能是值得的。

您还可以检查代码以查看会话中是否还剩下其他数据的时间超过了必要的时间。

答案 2 :(得分:0)

这些假设对我来说听起来很合理。也许还想查看AppPool上的设置,并试图找出其回收的原因。也许您需要做的就是改变它们(如果可以的话)。