是否存在某种会话大小限制或不可超过的值?
在我的Web应用程序中,我创建了一些DataTable来存储用户选择,这些选择存储在会话中,直到用户批准选择,因此我将这些值添加到数据库中.
问题是我不知道会话是否足够可靠以保留少量对象?
谢谢!
更多信息
会话大小最大约为10-20KB.
Kev*_*Kev 12
以下是关于会话状态的一些注意事项:
mode="InProc")会话状态仅限于工作进程可用的内存量.仅存储对象引用,而不是对象本身.进程外状态管理在持久化之前序列化对象:
使用会话状态服务器(mode="StateServer")的进程外状态管理仅限于状态服务可用的内存量.
使用SQL Server(mode="SQLServer")的进程外状态管理仅受SQL image数据类型的最大大小或数据库的最大允许大小限制.
显然,仍然需要有足够的内存可用于工作进程,以便能够将会话外对象拉回到内存中并在http请求的持续时间内重新水合.
正如我之前提到的,进程外状态管理在持久化之前将对象序列化.
这意味着对象必须serialisable其中不包括,例如,XmlDocument或任何从继承MarshalByRef.
尝试序列化此类对象将导致以下异常:
无法序列化会话状态.在"StateServer"和"SQLServer"模式下,ASP.NET将序列化会话状态对象,因此不允许使用不可序列化的对象或MarshalByRef对象.如果自定义会话状态存储在"自定义"模式下完成类似的序列化,则适用相同的限制.
Hen*_*man 11
是的,它足够可靠.它只是不太可扩展,所以提前计划.当你在超过1台服务器上运行它时,这将完全停止.
并且有一个限制:并发用户数*SizeOf-Session <Available-Mem
它当然取决于表的大小,通常可以接受几KB的存储(尽管高流量站点会尽量保持较小).
如果您的用户可以共享表,那么您可以将该数据放在Application对象中,这是一个很好的节省.
会话对象仅限于TimeOut设置,默认为20分钟.优化内存消耗的一种方法是减少这种情况,但这是用户方便的折衷.
| 归档时间: |
|
| 查看次数: |
41403 次 |
| 最近记录: |