1

我正在用 C#.net 和 mysql 创建一个网站(购物车)。在 .net 和 sql server 中,我们可以在 sql server 中管理会话。这是否可能与使用 mysql 的方式相同,如果是,那么如何?另一个问题 - 将会话存储在数据库中是购物车的正确方法还是应该存储在内存中?提前致谢

4

1 回答 1

1

.NET Framework中基本上有 3 种“内置”会话存储方法:

  • InProc模式,将会话状态存储在 Web 服务器的内存中。这是默认设置。

  • StateServer模式,它将会话状态存储在称为 ASP.NET 状态服务的单独进程中。这可确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于 Web 场中的多个 Web 服务器。

  • SQLServer模式将会话状态存储在 SQL Server 数据库中。这可确保在重新启动 Web 应用程序时保留会话状态,并使会话状态可用于 Web 场中的多个 Web 服务器。

如您所见,唯一支持对数据库进行序列化的是 SQL Server。但是,还有第四个选项 - 创建您自己的自定义会话存储提供程序。您可以通过创建继承SessionStateStoreProviderBase类的类来实现自定义会话状态存储提供程序。MSDN上的这篇文章描述了如何。

但是,您可能只想使用 StateServer 模式,因为这可以减轻使用 InProc 的许多风险(如果内存变低、应用程序池被回收或应用程序重新启动,会话状态很容易丢失)。只要记住用[Serializable()] 属性标记你所有的类。如果您想在用户离开网站后保留购物车信息,我只会使用数据库。

于 2012-04-18T07:57:31.977 回答