【发布时间】:2013-11-16 18:11:57
【问题描述】:
在我当前的任务中 - 我必须针对会话状态管理问题实施解决方案。目前的实现如下:
- 有一个 asp.net 表单允许您添加多个条目以形成一个批次。
- 这些字段代表一个条目(大多数字段是自动完成的) - 一旦您填写了所有字段并单击“添加”按钮 - 条目将添加到网格视图中 - 每次“添加”按钮单击它会导致回帖,并且网格视图会重新填充显示以前的条目。
- 多次重复上述步骤以输入多个条目后 - 所有条目都显示在网格视图中 - 然后单击“输入批处理”按钮 - 将网格视图中的所有条目作为批处理提交到数据库。
问题:要启用上述大部分功能 - 在整个页面和其他页面上都实现了会话状态 (InProc)。问题是——用户可以打开同一个应用程序的多个实例,然后应用程序就会发疯。另一个问题是 - 有时应用程序会启动用户并且他们必须重新登录,并且当他们在批处理中所做的所有条目都从网格视图中消失时。
我看到网络表单上到处都实现了会话。解决上述两个问题最明显的解决方案是实现会话状态(SQL Server)模式。
但在我继续实施之前,我有几个问题,如果有人可以提供帮助:
1 我可以更改当前的实现吗(这样我就不必重新编写已经在 Web 表单上使用的会话变量 - 因为它们有两个) - 我试图更改 web.config 以具有 ( sessionstate cookieless="true" - 我希望这会将会话 ID 放在 URL 中,进而启用多个实例的会话状态) - 但是在这样做之后 - 大多数字段的自动完成功能不起作用,所以我已更改配置以允许基于 cookie。那么有没有办法改变当前的会话实现,使其在应用程序的多个实例中正常工作。
- 如果我必须重新实现会话状态 - 谁能给我简要概述如何实现会话状态(SQL 服务器模式),以便它适用于多个实例 - 例如唯一键使用什么(如何设置并根据此键为多个实例获取会话变量)以及如何配置数据库中的表等。
注意:当前会话状态是“InProc”模式,我可以说因为它没有在任何地方设置,所以我认为这是默认设置。会话变量在当前实现中非常标准。
这是我开始的一个新项目 - 这是我的第一个任务 - 但是代码真的很混乱 - 它没有模块化甚至基本的 3 层实现。该代码非常难以管理且难以调试。
非常感谢任何帮助和建议。谢谢各位。
【问题讨论】: