好的我确定这很明显。但是当你说会话状态持久存储在内存中的“服务器”上时,我们是在谈论IIS还是什么?当我想到服务器端会话状态时,我认为内存就IIS应用程序池等而言。我离开基地还是遗失了什么?
http://msdn.microsoft.com/en-us/library/75x4ha6s.aspx
术语“服务器”可能意味着许多事情。当然它是“服务器端”,但我们在谈论服务器上的特定进程/内存/区域/应用程序(仅限IIS?其他?)
我希望MS能解释他们的意思,因为那是非常相对的。
具体来说,“存储在服务器上”
Storing Data on the Server (in memory)
• Session state
• Application state
• Profile Properties
所以“在服务器上”在内存中以及哪些进程/应用正在处理这些内容?
答案 0 :(得分:4)
这取决于。默认情况下,它位于工作进程内存中,但它可以位于专用状态服务器上,也可以位于SQL或您自己的自定义提供程序中。
来自MSDN:
ASP.NET会话状态支持会话数据的几种不同存储选项。每个选项都由SessionStateMode枚举中的值标识。以下列表描述了可用的会话状态模式:
InProc模式,它将会话状态存储在Web服务器的内存中。这是默认设置。
StateServer模式,它将会话状态存储在名为ASP.NET状态服务的单独进程中。这可确保在重新启动Web应用程序时保留会话状态,并使会话状态可用于Web场中的多个Web服务器。
SQLServer模式将会话状态存储在SQL Server数据库中。这可确保在重新启动Web应用程序时保留会话状态,并使会话状态可用于Web场中的多个Web服务器。
自定义模式,可让您指定自定义存储提供程序。
关闭模式,禁用会话状态。
答案 1 :(得分:4)
“当然是”服务器端“,但我们正在谈论服务器上的特定进程/内存/区域/应用程序(仅限IIS?其他?)”
每个站点都在应用程序池中运行,每个应用程序池基本上都是Web服务器上的一个进程。如果您的会话配置为正在进行中,则会话对象将存储在该进程的“内存”
中答案 2 :(得分:0)
ASP.NET只是一个框架;它是类的集合,它们执行代码。这段代码为您提供了会话状态,它将会话状态的信息存储在某些对象中,就像字典或类似对象一样。
(当进行In Proc时,你有状态服务器,sql server和custom,只要有人编写了一些实现正确接口的代码,自定义可以是任何东西)