是否存在某种不应超过的 session 大小限制或建议值?
在我的网络应用程序中,我创建了一些数据表来存储用户选择,这些选择存储在 session 中,直到用户批准选择,所以我将这些值添加到数据库中。
问题是我不知道 session 是否足够可靠以保留很少的对象?
谢谢!
更多信息
session 大小最大约为 10-20KB。
最佳答案
这里有一些关于 session 状态的注意事项:
- InProc (
mode="InProc"
) session 状态限制为工作进程可用的内存量。仅存储对象引用,不存储对象本身。
进程外状态管理在持久化之前序列化对象:
使用 session 状态服务器 (
mode="StateServer"
) 的进程外状态管理受状态服务可用内存量的限制。使用 SQL Server (
mode="SQLServer"
) 的进程外状态管理仅受 SQLimage
数据类型或数据库的最大允许大小。
显然,工作进程仍然必须有足够的可用内存才能将 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/