ASP 会话 <session>

概述

<asp> 元素的 <session> 元素指定 Active Server Pages (ASP) 会话状态设置。 Internet Information Services (IIS) 7 借助于会话状态来存储有关每个唯一客户端会话的信息。 例如,如果网站具有购物车应用程序,则每个客户端的购物车的内容可以存储在会话状态中。

您必须在服务器上拥有内存资源才能保留 ASP 会话状态,并且所需的内存量取决于您在每个会话中存储的信息量。 为了帮助调节 IIS 7 将使用的资源,可以指定会话状态的设置。 例如,max 属性指定要存储的最大会话数,timeout 属性指定每个 ASP 会话的持续时间。

如果应用程序不需要会话状态,则将 allowSessionState 属性设置为 false 将禁用 ASP 会话状态。

兼容性

版本 说明
IIS 10.0 <session> 元素在 IIS 10.0 中未进行修改。
IIS 8.5 <session> 元素在 IIS 8.5 中未进行修改。
IIS 8.0 <session> 元素在 IIS 8.0 中未进行修改。
IIS 7.5 <session> 元素在 IIS 7.5 中未进行修改。
IIS 7.0 IIS 7.0 中引入了 <asp> 元素的 <session> 元素。
IIS 6.0 <session> 元素替换以下 IIS 6.0 元数据库属性:
  • AspAllowSessionState
  • AspKeepSessionIDSecure
  • AspSessionMax
  • AspSessionTimeout

安装

要在 Web 服务器上支持和配置 ASP 应用程序,必须安装 ASP 模块。 要安装 ASP 模块,请遵循以下步骤。

Windows Server 2012 或 Windows Server 2012 R2

  1. 在任务栏上,单击 “服务器管理器”。
  2. 在“服务器管理器”中,单击“管理”菜单,然后单击“添加角色和功能”。
  3. 在“添加角色和功能”向导中,单击“下一步”。 选择安装类型,然后单击“下一步”。 选择目标服务器,然后单击“下一步”。
  4. 在“服务器角色”页上,依次展开“Web 服务器 (IIS)”、“Web 服务器”和“应用程序开发”,然后选择“ASP”。
    Image of Web Server and Application Development pane expanded with A S P selected.
  5. 如果出现“是否添加 ASP 所需的功能?”对话框,请单击“添加功能”。 (仅当尚未在服务器上安装 ISAPI 扩展角色服务时,才会显示此页面。)
  6. 在“服务器角色”页上,单击“下一步”。
  7. 在“选择功能”页上,单击“下一步”
  8. “确认安装选择”页上,单击“安装”
  9. 在“结果” 页面中单击“关闭”

Windows 8 或 Windows 8.1

  1. 在“开始”屏幕上,将指针一直移动到左下角,右键单击“开始”按钮,然后单击“控制面板”

  2. 在“控制面板”中,单击“程序与功能”,然后单击“打开或关闭 Windows 功能”。

  3. 依次展开“Internet 信息服务”、“万维网服务”和“应用程序开发功能”,然后选择“ASP.NET”。
    Screenshot of Turn Windows on or off feature page with Application Development Features pane expanded and A S P selected.

    注意

    如果尚未安装 ISAPI 扩展角色,则会选择该角色。

  4. 单击“确定”。

  5. 单击“关闭” 。

Windows Server 2008 或 Windows Server 2008 R2

  1. 在任务栏上,单击“开始”,指向“管理工具”,然后单击“服务器管理器”。
  2. 在“服务器管理器”层次结构窗格中,展开“角色”,然后单击“Web 服务器(IIS)”。
  3. 在“Web 服务器(IIS)”窗格中,滚动到“角色服务”部分,然后单击“添加角色服务”。
  4. 在“添加角色服务向导”的“选择角色服务”页,选择“ASP”。
    Screenshot of Select Role Services page of the Add Role Services Wizard displaying A S P selected.
  5. 如果出现“添加 ASP 所需的角色服务”对话框,请单击“添加所需的角色服务”。 (仅当尚未在服务器上安装 ISAPI 扩展角色服务时,才会显示此页面。)
    Screenshot of Add Role Services dialog box displaying the Add role services required for A S P question and Add Required Role Services button.
  6. 在“选择角色服务”页上,单击“下一步”。
  7. “确认安装选择”页中,单击“安装”
  8. 在“结果” 页面中单击“关闭”

Windows Vista 或 Windows 7

  1. 在任务栏上,单击“开始”,然后单击“控制面板”。
  2. 在“控制面板”中,单击“程序与功能”,然后单击“打开或关闭 Windows 功能”。
  3. 依次展开“Internet Information Services”、“万维网服务”和“应用程序开发功能”。
  4. 选择“ASP”,然后单击“确定”
    Screenshot of Turn Windows features on or off page displaying Application Development Features pane expanded and A S P selected.

操作方式

如何为站点或应用程序配置 ASP 会话状态设置

  1. 打开 Internet Information Services (IIS) 管理器:

    • 如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:

      • 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows 8 或 Windows 8.1:

      • 按住 Windows 键,按字母 X,然后单击“控制面板”。
      • 单击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
    • 如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:

      • 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows Vista 或 Windows 7:

      • 在任务栏上,单击“开始”,然后单击“控制面板”。
      • 双击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
  2. 在“连接”窗格中,展开服务器名称,展开“站点”,然后导航到要配置的网站或 Web 应用程序。

  3. 在站点或应用程序“主页”窗格中,双击“ASP”。
    Screenshot pf application Home pane displaying A S P highlighted.

  4. 在 ASP 窗格中,展开“会话属性”部分并配置所需的设置。
    Image of A S P pane with Session Properties section expanded and highlighted.

  5. 在“操作”窗格中,单击“应用”

配置

特性

属性 说明
allowSessionState 可选布尔属性。

指定是否启用 ASP 应用程序的会话状态持久性。

默认值为 true
keepSessionIdSecure 可选布尔属性。

指定如果通过安全会话通道分配,是否将会话 ID 作为安全 Cookie 发送。

默认值为 true
max 可选 uint 属性。

指定并发会话的最大数目。

默认值为 4294967295
timeout 可选的 timeSpan 属性。

指定在上次发出与某个会话对象关联的请求后将保留该对象的最长时间段 (hh:mm:ss)。

默认值为 00:20:00

子元素

无。

配置示例

以下配置示例启用 ASP 会话状态,将 ASP 会话的最大数目设置为 1000,并将默认网站的会话超时设置为 10 分钟。

<location path="Default Web Site">
   <system.webServer>
      <asp>
         <session allowSessionState="true" max="1000" timeout="00:10:00" />
      </asp>
   </system.webServer>
</location>

代码示例

以下代码示例可启用 ASP 会话状态,将 ASP 会话的最大数目设置为 1000,并将默认网站的会话超时设置为 10 分钟。

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/asp /session.allowSessionState:"True" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/asp /session.max:"1000" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/asp /session.timeout:"00:10:00" /commit:apphost

注意

使用 AppCmd.exe 配置这些设置时,必须确保将 commit 参数设置为 apphost。 这会将配置设置提交到 ApplicationHost.config 文件中的相应位置部分。

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection aspSection = config.GetSection("system.webServer/asp", "Default Web Site");

         ConfigurationElement sessionElement = aspSection.GetChildElement("session");
         sessionElement["allowSessionState"] = true;
         sessionElement["max"] = 1000;
         sessionElement["timeout"] = TimeSpan.Parse("00:10:00");

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim aspSection As ConfigurationSection = config.GetSection("system.webServer/asp", "Default Web Site")

      Dim sessionElement As ConfigurationElement = aspSection.GetChildElement("session")
      sessionElement("allowSessionState") = True
      sessionElement("max") = 1000
      sessionElement("timeout") = TimeSpan.Parse("00:10:00")

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var aspSection = adminManager.GetAdminSection("system.webServer/asp", "MACHINE/WEBROOT/APPHOST/Default Web Site");

var sessionElement = aspSection.ChildElements.Item("session");
sessionElement.Properties.Item("allowSessionState").Value = true;
sessionElement.Properties.Item("max").Value = 1000;
sessionElement.Properties.Item("timeout").Value = "00:10:00";

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set aspSection = adminManager.GetAdminSection("system.webServer/asp", "MACHINE/WEBROOT/APPHOST/Default Web Site")

Set sessionElement = aspSection.ChildElements.Item("session")
sessionElement.Properties.Item("allowSessionState").Value = True
sessionElement.Properties.Item("max").Value = 1000
sessionElement.Properties.Item("timeout").Value = "00:10:00"

adminManager.CommitChanges()