【问题标题】:HttpSessionState Where, How, Advantages?HttpSessionState 在哪里,如何,优势?
【发布时间】:2010-06-17 21:00:28
【问题描述】:

你看下面的代码,我是如何使用会话变量的; 所以这三个问题是:

  1. 它们存储在哪里? (服务器或客户端)
  2. 对于每个网页访问者来说它们是唯一的吗?
  3. 我可以在我的工作完成后使用 ajax 或简单的 js 代码将其删除吗?或者它会被自动删除..?

.

sbyte[][] arrImages = svc.getImagesForFields(new String[] { "CustomerName", "CustomerSurName" });

Dictionary<string, byte[]> smartImageData = new Dictionary<string, byte[]>();
int i = 0;
foreach (sbyte[] bytes in arrImages)
{
    smartImageData.Add(fieldNames[i], ConvertToByte(bytes));
    i++;
}

Session.Add("SmartImageData", smartImageData);

【问题讨论】:

    标签: c# asp.net session asp.net-ajax session-variables


    【解决方案1】:

    阅读更多关于会话here。回答您的问题:

    1. 取决于您的配置(进程内、会话状态服务器等),但始终位于服务器端。
    2. 是的,每个访问者都会获得一个唯一的 cookie。
    3. 您可以通过删除会话cookie(通常为ASP.NET_SessionId)在客户端删除它,或者通过调用Session.Abandon() 在服务器端删除它。此外,会话在某个(可配置的)不活动期后超时。

    【讨论】:

    • 客户端上用于识别用户会话的cookie称为ASP.NET_SessionId。
    【解决方案2】:

    Session 变量是否存储在 Server 上?您可以配置其他状态管理机制(例如数据库)。

    它们对于每个用户会话都是唯一的。 Session 超时时会被移除。

    【讨论】:

      【解决方案3】:

      会话状态信息存储在服务器而不是客户端。当会话到期时,此会话信息将被完全自动删除。您可以通过 web.config 文件更改会话过期时间。每个用户的会话数据都是唯一的。您可以随时使用 ajax 或更改它甚至删除它。

      如果你想让会话数据持久化,你可以配置你的数据库来存储会话信息。您甚至可以配置状态服务器来存储会话数据。

      【讨论】:

        【解决方案4】:

        会话通常存储在服务器上(取决于您的服务器/应用程序配置)。每个唯一的浏览器连接都分配有一个会话 ID,服务器使用该会话 ID 将客户端与后续连接上的唯一服务器会话相关联。会话 id 被传递给客户端以存储为 cookie,或作为附加到服务器的每个 url 请求的参数。

        它被用作在 HTTP 调用之间与服务器保持客户端状态的一种方式。

        会话在一段可配置的不活动时间后过期。但是在 .NET 中,您可以调用 Session.Abandon() 来结束当前会话。

        【讨论】:

          猜你喜欢
          • 2014-05-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-02
          • 1970-01-01
          • 1970-01-01
          • 2020-02-21
          • 2013-04-28
          相关资源
          最近更新 更多