2

我目前正在使用一种设备来呈现由 IIS 服务器提供的 xml 视图。不幸的是,该设备不支持 cookie 或重定向,这会使常规 asp.net 会话或无 cookie 会话的使用无效。

数据超出了 url 查询字符串允许的大小,因此这也不是一个选项。

我想要做的是拥有某种自定义会话机制,我可以在其中明确告知会话 ID(ID 可能是在 url 查询字符串中传递的设备的 mac 地址)。

我可以使用 sql 数据库,但我想避免这种情况。

有任何想法吗?

编辑:

我刚刚得知该解决方案将在负载均衡器上运行,因此看来我真的要使用 SQL 解决方案。感谢您的回复都是有效的,但似乎我在这方面没有太多选择......

4

2 回答 2

3

您所需要的只是用户独有的密钥。如果您有权访问 Mac 地址,请使用该地址。不过,我可能会选择 GUID 并在查询字符串中传递这一轮。

在服务器端,您可以选择数据库方法(或任何形式的文件存储,但 DB 已针对查询性能进行了优化),或者将信息存储在内存中。创建一个静态字典类型类,将数据与每个“唯一键”相关联。然后您可以轻松查询数据。

当您需要在会话到期时进行锻炼时,更困难的部分来了。如果您采用数据库方法,您可以编写一个 Windows 服务来查询“最后更新的会话”标志,如果会话过期超过给定时间,则删除该会话。如果您选择“内存中”方法,这可能会更难管理。

“内存中”选项的另一个缺点是您需要小心存储过多信息并耗尽可用内存。这是我选择数据库存储的主要原因

于 2012-11-12T14:57:22.943 回答
1

除非您想让每次交互都成为 POST,在每次用户单击链接时传递会话数据,否则您必须将状态存储在某个地方(例如数据库),并使用轻量级 ID 查找它(就像你描述的mac地址)。

当然,不一定非得是 SQL 数据库,你可以看看 redis之类的其他存储机制。

于 2012-11-12T14:56:19.447 回答