c# - ASP.NET session 大小限制

标签 c# asp.net

是否存在某种不应超过的 session 大小限制或建议值?

在我的网络应用程序中,我创建了一些数据表来存储用户选择,这些选择存储在 session 中,直到用户批准选择,所以我将这些值添加到数据库中。

问题是我不知道 session 是否足够可靠以保留很少的对象?

谢谢!

更多信息

session 大小最大约为 10-20KB。

最佳答案

这里有一些关于 session 状态的注意事项:

  • InProc (mode="InProc") session 状态限制为工作进程可用的内存量。仅存储对象引用,不存储对象本身。

进程外状态管理在持久化之前序列化对象:

  • 使用 session 状态服务器 (mode="StateServer") 的进程外状态管理受状态服务可用内存量的限制。

  • 使用 SQL Server (mode="SQLServer") 的进程外状态管理仅受 SQL image 数据类型或数据库的最大允许大小。

显然,工作进程仍然必须有足够的可用内存才能将 session 对象拉回内存并在 http 请求期间重新水合。

正如我之前提到的,进程外状态管理会在持久化之前序列化对象。

这意味着对象必须是可序列化的,排除,例如,XmlDocument 或继承自 MarshalByRef 的任何对象>.

尝试序列化此类对象将导致以下异常:

Unable to serialize the session state. In 'StateServer' and 'SQLServer' mode, ASP.NET will serialize the session state objects, and as a result non-serializable objects or MarshalByRef objects are not permitted. The same restriction applies if similar serialization is done by the custom session state store in 'Custom' mode.

关于c# - ASP.NET session 大小限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2843237/

相关文章:

c# - 使用 JavaScript 或 C# 检测浏览器插件?

c# - 您可以更改 ASP.NET Core 项目中 launchSettings.json 的位置吗?

c# - 结构图配置异常

c# - 从目录中选择具有最新修改日期的文件

c# - 使用 Linkedin api 时出现 400 错误请求

c# - 如何阻止回发在客户端刷新页面

asp.net - Orchard CMS 1.x [文档存储] - 混合记录支持和记录较少的属性

c# - 在 ComboBox 中缓慢滚动

c# - 如何在扩展管理器中卸载 Microsoft Web 开发人员工具

c# - Entity Framework 映射奇怪 - 成员名称不能与其封闭类型相同