ASP.NET基于cookie的会话,是否有SessionStateModule呢?

时间:2012-09-27 07:16:36

标签: c# asp.net asp.net-mvc

我正在寻找一种在ASP.NET中完全基于cookie的会话的方法。我不打算在其中存储复杂的对象,只是字符串键值对。

我正在寻找类似Play的方式!框架处理会话,它基本上编码cookie中的所有会话数据,并负责在每个请求上加密/解密它。

如果可以避免,我不想为此编写自己的SessionStateModule,是否存在?

由于

编辑:我不需要存储比cookie可以处理的更多数据(只有几个标识符),我仍然需要特定于每个会话的键值对。我想使用cookie,以便不需要维护服务器状态(在进程中或在数据库中),这允许我非常容易地添加更多服务器,并且更少依赖于外部应用程序(没有状态服务器/ memcached / redis等)

2 个答案:

答案 0 :(得分:0)

除非您要创建大量数据,否则您将无法在cookie中存储那么多数据。

鉴于您希望使用键值对,请考虑使用memcached或redis等缓存。如果您不在Web场中,甚至是服务器缓存?

答案 1 :(得分:0)

我认为不存在:由于使用cookie固有的限制(特别是最大尺寸),它会太脆弱。

我知道这不是回答你的问题,但我不会为此实施SessionStateModule。这样做意味着使用Session的任何第三方组件或任何使用Session的未来维护程序员都可能在cookie中存储不适当的数据(例如,太大)。

我建议你编写自己的面向API的圆形存储键值对,只在cookie中包含原始值(string,Int32,DateTime,...)。

您还可以使API“感知Cookie” - 例如设置HttpCookie.Path,它可以让你:

  • 避免为不需要它们的请求发送cookie(javascript,images,...)

  • 为您的应用程序的不同区域提供不同的cookie(同名但路径不同)。这有助于缩小cookie大小。