我目前正在使用一种设备来呈现由IIS服务器提供的xml视图。遗憾的是,该设备不支持cookie或重定向,这会使常规asp.net会话或无cookie会话的使用无效。
数据超出了url查询字符串允许的大小,因此也不是一个选项。
我想要做的是拥有某种自定义会话机制,我可以明确地告诉会话ID(Id可以是在url查询字符串中传递的设备的mac地址)。
我可以使用sql数据库,但我想避免这种情况。
有什么想法吗?
编辑:
我刚刚获悉解决方案将在负载均衡器上运行,所以我似乎真的要使用SQL解决方案。感谢您的回复都是有效的,但似乎我没有太多的选择......
答案 0 :(得分:3)
您只需要一个用户独有的密钥即可。如果您有权访问Mac地址,请使用它。我可能会选择GUID并在查询字符串中传递那一轮。
服务器端您既可以使用数据库方法(或任何形式的文件存储,但可以针对查询性能进行优化),也可以将信息存储在内存中。创建一个静态字典类型类,将数据与每个“唯一键”相关联。然后,您可以轻松查询数据。
当您需要在会话到期时解决问题时,会遇到更困难的部分。如果采用数据库方法,您可以编写一个Windows服务来查询“上次更新的会话”标志,并在会话超过给定时间后删除该会话。如果您选择“内存”方法,这可能会更难管理。
“内存”选项的另一个缺点是,您需要注意存储过多信息并耗尽可用内存。这是我进行数据库存储的主要原因
答案 1 :(得分:1)
除非您希望将每个交互都设置为POST,并且每次用户单击链接时都会传递会话数据,否则您必须将状态存储在某个位置(例如数据库),然后使用轻量级ID(就像你描述的mac地址)。
当然,它不必是SQL数据库,您可以查看其他存储机制,如redis。