【问题标题】:Where asp.net session is kept on iis serverasp.net 会话保存在 iis 服务器上的位置
【发布时间】:2011-08-17 13:09:21
【问题描述】:

当我在 asp.net 应用程序中设置会话时,我想知道它的存储位置。它会消耗 RAM 或硬盘空间吗?
实际上,我将数据表保存到会话变量中。我将它保存到会话中,因为数据表的计算需要很长时间。为了不再计算数据表,我从会话中获取它。
但我很好奇数据表何时会比现在大得多。它会卡住国际空间站吗?
谢谢

【问题讨论】:

  • 取决于您使用的会话状态模式

标签: asp.net session iis


【解决方案1】:

ASP.NET 中的会话状态默认存储在进程内存(即 RAM)中。

您可以在 web.config 中通过更改 configuration/system.web/sessionState 元素的值来更改此设置:

<configuration>
  <system.web>
    <sessionState mode="...">
  </system.web>
</configuration>

可用的选项有:

  • InProc(默认)
  • StateServer - 将存储在单独的进程中,该进程可以在单独的计算机上
  • 关闭
  • SqlServer - 将状态信息存储在 sql server 数据库中
  • 自定义 - 允许您提供自己的会话存储

【讨论】:

    【解决方案2】:

    根据您在 Web.Config 中配置 Session 的方式,可以将 Session 存储在 In-Memory、Asp.NET State Server、Sql Server 中。

    默认情况下,会话存储在内存中,即 Ram。如果数据表变大并且有许多并发用户,您可能会遇到异常。取决于有多少用户同时访问系统,系统上的 Ram 是什么等。

    【讨论】:

      【解决方案3】:

      会话状态可以存储在您可以选择的不同位置。这是good explanation on MSDN 默认值在您运行 Web 应用程序的服务器上的内存中,因此如果您的会话变得太大,您确实会遇到内存/分页问题。

      但为什么是会话?数据表中的数据是用户特定的吗?否则缓存会更合适。

      【讨论】:

      • +1 用于在回答问题的同时建议缓存。
      【解决方案4】:

      如果您使用InProc 会话,那么它将存储在内存中。因此,如果您有足够的内存,它将在内存中。一旦达到极限,就期待它分页到磁盘。

      您还可以使用 SQL Server 等进程外会话存储。这可以在 web.config 中进行配置。请注意,您需要为其配置一个数据库。您还可以查看 MSDN 至 read up 的存储类型。

      上面的旧链接,但仍然部分有用。再快速浏览一下,我发现a better link 更详细。

      【讨论】:

        【解决方案5】:

        典型的 InProc 会话状态存储在 Web 服务器的内存中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-01-18
          • 2022-10-24
          • 2018-06-23
          • 2016-09-20
          • 2017-03-09
          • 2017-09-18
          • 2011-03-18
          • 1970-01-01
          相关资源
          最近更新 更多