在用户控件中使用会话

时间:2013-04-18 18:11:06

标签: asp.net vb.net iis ascx

我在项目中使用了很多ASCX用户控件。这些控件使用更新面板来更新其内容。要在部分回发中保留数据(即,在更新面板更新时),我将所有控件数据存储在会话中。例如,我可能有一个使用CheckBoxList的控件。当用户从列表中选中一个框时,会导致部分回发(执行某些逻辑)并触发更新面板。由于面板正在更新,我将丢失回发之间的所有数据,除了我将这些数据存储在会话中。这样,当控件重新加载时,我可以获取数据并恢复复选框列表。我的会话通常由对象列表组成。

我的问题是:这是保留数据的最佳方式吗?我可能没有考虑哪些可能的问题?有人告诉我,如果有多个人同时使用它(因为对象列表很大),IIS可能会耗尽内存并崩溃。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

很难说这是否是“为您的特定项目保留数据的最佳方式”。但是,我可以解决你问题中的“可能存在的问题”部分。

会话状态默认存储在内存中,这意味着您将在服务器上使用其他资源。会话变量可以动态创建,不需要您明确处理它们,这可能会导致更多的开销。所以是的,你是正确的,在你的大部分功能中使用会话很可能意味着使用更多的资源(CPU和内存)。它是否会“耗尽内存和崩溃”是负载与服务器的关系。