会话状态(服务器端)

时间:2010-10-22 20:52:41

标签: asp.net

好的我确定这很明显。但是当你说会话状态持久存储在内存中的“服务器”上时,我们是在谈论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

所以“在服务器上”在内存中以及哪些进程/应用正在处理这些内容?

3 个答案:

答案 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,只要有人编写了一些实现正确接口的代码,自定义可以是任何东西)