配置SQL Server以存储 ASP.NET 会话状态

本文演示如何为 ASP.NET SQL Server模式会话状态管理配置 Microsoft SQL Server。

原始产品版本: ASP.NET
原始 KB 数: 317604

要求

以下列表概述了所需的建议的硬件、软件、网络基础结构和 Service Pack:

  • Windows
  • .NET Framework
  • Internet 信息服务 (IIS)
  • SQL Server

为 ASP.NET SQL Server会话状态配置SQL Server

以下步骤介绍如何运行InstallSqlState.sqlUninstallSqlState.sql脚本文件来配置SQL Server模式会话状态管理。

  1. 在 SQL 查询分析器的“ 文件 ”菜单上,选择“ 打开”。

  2. 在“ 打开查询文件 ”对话框中,浏览到 InstallSqlState.sql 脚本文件,然后选择“ 打开”。 默认情况下, InstallSqlState.sql 位于以下文件夹中:

    • system drive\WINNT\Microsoft.NET\Framework\version\
    • system drive\Windows\Microsoft.NET\Framework\version\
  3. 在 SQL 查询分析器中打开InstallSqlState.sql后,选择“查询”菜单上的“执行”以运行脚本。

  4. 在运行 UninstallSqlState.sql 脚本文件以卸载SQL Server模式会话状态管理配置之前,必须停止 w3svc 进程。 为此,请按照下列步骤操作:

    1. Windows“开始 ”菜单上,选择“ 运行”,键入 cmd,然后选择“ 确定” 以打开命令提示符。
    2. 在命令提示符下,键入 net stop w3svc。 你会收到 w3svc 进程已停止的确认。
  5. 在 SQL 查询分析器的“ 文件 ”菜单上,选择“ 打开”。

  6. 在“ 打开查询文件 ”对话框中,浏览到 UninstallSqlState.sql 脚本文件,然后选择“ 打开”。 默认情况下, UninstallSqlState.sql 位于以下文件夹中:

    • system drive\WINNT\Microsoft.NET\Framework\version\
    • system drive\Windows\Microsoft.NET\Framework\version\
  7. 在 SQL 查询分析器中打开UninstallSqlState.sql后,选择“查询”菜单上的“执行”以运行脚本。

  8. 卸载SQL Server模式会话状态管理配置后,必须重启 w3svc 服务。 若要重启 w3svc 进程,请在命令提示符处键入 net start w3svc

修改应用程序的 Web.config 文件

若要实现 ASP.NET SQL Server模式会话状态管理,必须修改<sessionState>应用程序 Web.config 文件的 元素,如下所示:

  1. 将 元素的 <sessionState> mode 属性设置为 SQLServer,以指示会话状态存储在 SQL Server 中。

  2. 设置 属性sqlConnectionString以指定SQL Server连接字符串。 例如:

    sqlConnectionString="data source=MySQLServer;user id=<username>;password=<strongpassword>"
    

    注意

    用户 <(用户名>)必须有权对数据库执行此操作。

修改后的 <sessionState> 元素应如下所示:

<sessionState
    mode="SQLServer"
    sqlConnectionString="data source=127.0.0.1;user id=<username>;password=<strongpassword>"
    cookieless="false"
    timeout="20"
/>

注意

在指定 <sessionState> 元素和关联的属性值时,请确保使用正确的大小写。 此代码区分大小写。

疑难解答

  • 如果在运行 UninstallSqlState.sql 脚本文件之前未停止 w3svc 进程,则会收到以下错误消息:

    无法删除数据库“ASPState”,因为它当前正在使用中

  • 如果在相关会话过期后未删除 ASPStateTempSessions 表中的条目,请确保 SQL Server 代理正在运行。 可以通过通过SQL Server中的作业计划的存储过程来实现此功能。 SQL Server代理管理这些作业。

  • 使用默认InstallSqlState.sqlUninstallSqlState.sql脚本文件配置 ASP.NET SQL Server模式会话状态管理时。 默认情况下,这些文件将 ASPStateTempSessionsASPStateTempApplications 表添加到 tempdb 数据库中SQL Server。 此外,如果重启SQL Server,则会丢失存储在 ASPStateTempSessionsASPStateTempApplications 表中的会话状态数据。 有关如何运行备用脚本以配置持久性SQL Server会话状态管理的详细信息,以便在重启服务器时会话数据不会丢失。

References

会话状态