0

有多种模式可以将会话数据存储在 ASP.net C# 应用程序中。其中之一是 InProc 模式。InProc 模式下可以保存的最大数据量的限制是多少?这是可配置的限制吗?

编辑:我知道这可能不酷,甚至听起来亵渎神明,但我处于一种独特的情况,我可能需要在会话中存储 10MB 文件。一次可能有几十个。因此问题。

4

3 回答 3

3

这是一个好问题还是一个可怕的问题取决于您是尝试为大量“瘦”会话(好的)计划容量还是计划将大量数据放入会话(坏)。

IIS 允许私有内存控制和虚拟内存控制。默认情况下这是无限的;如果您确实设置了限制,它可用于触发应用程序池回收。回收应用程序池可能是不可取的,例如 1000 个用户登录,达到内存限制,站点重新启动和每个人的会话数据丢失。请求限制可能更合适。

请记住,“为进程保留的数据存储量仅受操作系统可以在磁盘上获取的空间量的限制。” (参考)但是一旦你分页到磁盘,性能就会受到严重影响。@RB 关于导致大量网络流量的进程外“胖”会话的评论也是恰当的。

需要注意的是,MemoryCache提供了更精细的大小/过期控制。它与ASP.Net 使用的非常相似。根据您对 10MB 文件的评论,我建议您查看此选项。它将像会话一样在进程中运行(并且仍然受到与会话相同的内存限制),但您可以在一定程度上控制它。

于 2012-08-31T14:21:29.747 回答
0

您可以为 IIS7 中的每个应用程序池配置内存限制。但是我不确定您是否可以详细配置会话状态内存。

于 2012-08-31T14:14:02.680 回答
0

会话中数据的长度或大小没有限制,只要服务器或主机有可用的内存即可。

于 2012-08-31T14:14:29.540 回答