0

我目前正在开发一个将其会话状态存储在进程中的应用程序。由于我们发布应用程序/应用程序池回收时应用程序的编写方式,会话数据丢失并且用户注销。

这不是很好,原因有以下三个:

  1. 升级软件将用户注销
  2. 修复错误很困难,因为当我们重建解决方案时,开发人员必须导航回他/她正在处理的页面,这需要时间。
  3. 我们正在寻求转向负载平衡的基础架构

我决定将 Session State 移动到 StateServer 以防止 Session 丢失。

使用 StateServer 的先决条件是存储在 Session 中的所有对象都必须是可序列化的,因此必须使用 System.SerializableAttribute 显式修饰。

所以我发现自己手动浏览了我们的 SessionData 对象(非常大)的整个对象图,这需要一些时间。

我已经停在这一点上,因为这似乎是一项非常错误的任务。

我还发现我们的根 SessionData 对象可以很好地存储在会话状态中,即使没有使用 Serializable 属性修饰的属性,只要它们为空。因此,在抛出异常之前,我不会经历所有我不知道的事情。

所以我的问题是:

  1. 我是否做出了将会话状态移出进程的正确决定(我们可能正在转向负载平衡模型,所以我认为这将是必要的)
  2. 我需要手动遍历整个对象图并显式添加 System.SerializableAttribute 是否正确。

提前致谢。

4

0 回答 0