有多种模式可以将会话数据存储在ASP.net C#应用程序中。其中一个是InProc模式。在InProc模式下可以保存的最大数据量的限制是多少?这是可配置的限制吗?
编辑:我知道这可能不太酷,甚至听起来很亵渎,但我处在一个独特的情况,我可能需要在会话中存储10MB文件。一次可能有几十个。因此问题。
答案 0 :(得分:3)
这是一个好问题还是一个可怕的问题取决于你是否正在尝试计划众多“瘦”会话的容量(罚款)或计划将大量数据放入会话(坏)。
IIS允许私有内存控制和虚拟内存控制。默认情况下这是无限制的;如果您设置了限制,则可以使用它来触发应用程序池回收。回收应用程序池可能是不可取的,例如已登录1000个用户,达到内存限制,站点重新启动,并为每个人session data is lost。请求限制可能更合适。
请记住,“为进程保留的数据存储量仅受操作系统在磁盘上占用的空间量的限制。” (reference)但是只要您分页到磁盘,性能就会受到严重影响。 @ RB关于流程“胖”会话导致网络流量过大的评论也是合适的。
作为备注,MemoryCache提供更精细的大小/到期控制。这是ASP.Net使用的very similar。根据您对10MB文件的评论,我建议您查看此选项。它将在会话过程中运行(并且仍然受到与会话相同的内存限制),但您可以在某种程度上control it。
答案 1 :(得分:0)
您可以为IIS7中的每个应用程序池配置内存限制。但我不确定您是否可以详细配置会话状态内存。
答案 2 :(得分:0)
对于会话中的数据长度或大小没有限制,只要服务器或主机有内存可用。