1

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

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

在像我们现在这样的繁忙季节,用户经常丢失他们的购物车和他们的 FormsAuthentication 登录信息。

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

4

3 回答 3

2

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

Microsoft 网站上有一个脚本可用于创建永久会话状态数据库。我建议改用那个(见这里)。

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

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

于 2008-12-12T14:26:43.000 回答
1

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

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

于 2008-12-12T14:25:21.130 回答
0

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

于 2008-12-12T14:24:58.357 回答