0

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

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

谢谢你的帮助

4

1 回答 1

0

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

会话状态默认存储在内存中,这意味着您将在服务器上使用额外的资源。会话变量可以即时创建,不需要您显式处理它们,这可能会导致更多开销。所以是的,您是正确的,将会话用于您的大部分功能很可能意味着使用更多资源(CPU 和内存)。它是否会“内存不足并崩溃”是负载与服务器的问题。

于 2013-04-18T19:00:36.873 回答