ASP.NET - 在会话变量中存储类 - 它是如何工作的(内存)?

Jos*_*eld 5 .net c# asp.net session

我已经读过你可以直接将类存储到会话变量中

Session["var"] = myclass;
Run Code Online (Sandbox Code Playgroud)

我的问题是内存管理是如何工作的.它会自动将其序列化到客户端的会话中吗?

或者它是否保存服务器内存中类的实例的数据,并且只在会话对象中保存一个引用?

SLa*_*aks 12

ASP.Net会将您的对象static存储在服务器内存中的嵌套字典中.
然后它使用会话ID将cookie发送到客户端.

下次客户端发送请求时,ASP.Net将从外部字典中检索与该ID相关联的会话,然后为您提供包含该会话中对象的内部字典.

(这是默认会话提供程序的工作方式;其他提供程序可以将对象序列化为SQL Server,或者完全执行其他操作)


ntz*_*lis 5

您不会在会话中存储类,而是存储这些类的实例.是的,默认会话存储是内存.但是,您也可以将SQL Server用作会话存储.然后会发生一些序列化.

会话数据在客户端不可用.