为会话状态配置自动检测 Cookie 模式 (IIS 7)
应用到: Windows 7, Windows Server 2008, Windows Server 2008 R2, Windows Vista
在自动检测 Cookie 模式下,如果移动设备配置文件支持 Cookie,则使用 Cookie,否则不使用 Cookie。 对于已知支持 Cookie 的桌面浏览器,当在其中启用 Cookie 支持时,ASP.NET 将尝试使用 Cookie。 如果禁用 Cookie 支持,会话状态将存储在 URL 中。
当使用“自动检测”Cookie 模式时,应该要求重新生成过期的会话 ID。 这样做会使 Web 服务器废弃原有的令牌并重新生成令牌,从而缩短了潜在攻击者捕获 Cookie 并访问 Web 服务器内容的时间。 您还应当考虑将超时值更改为小于默认的 20 分钟。
先决条件
为会话状态配置自动检测 Cookie 模式
您可以通过以下方法执行此过程:使用用户界面 (UI)、在命令行窗口中运行 Appcmd.exe 命令、直接编辑配置文件或编写 WMI 脚本。
用户界面
使用 UI
-
打开 IIS 管理器,然后导航至您要管理的级别。 有关如何打开 IIS 管理器的信息,请参阅 打开 IIS 管理器 (IIS 7)。 有关如何在 UI 的各个位置间进行导航的信息,请参阅 在 IIS 管理器中导航 (IIS 7)。
-
在“功能视图”中,双击“会话状态”。
-
在“会话状态”页的“Cookie 设置”区域中,从“模式”下拉列表中选择“自动检测”。
-
在“名称”文本框中键入一个 Cookie 名称,或使用默认的 Cookie 名称 ASP.NET_SessionId。
-
在“超时”文本框中键入一个超时值,或采用默认的超时值 20 分钟。
-
选中“重新生成过期的会话 ID”,然后在“操作”窗格中单击“应用”。
命令行
若要为会话状态配置自动检测 Cookie 模式,请使用以下语法:
appcmd set config /commit:WEBROOT /section:sessionState /cookieless:AutoDetect /cookieName:string /timeout:timeSpan/regenerateExpiredSessionId:True|False
变量 cookieless:AutoDetect 用于将 IIS 7 配置为对会话状态使用自动检测 Cookie 模式。 变量 string 是 Cookie 的名称。 默认值为 ASP.NET_SessionId。 变量timeSpan 用于设置 Cookie 的超时值,单位为分钟。 默认值为 20 分钟。 变量 regenerateExpiredSessionId:True|False 用于指定是否重新生成过期的会话 ID。
![]() |
---|
在 IIS 7 中使用 Appcmd.exe 在全局级别配置 <sessionState> 元素时,必须在命令中指定 /commit:WEBROOT,以便对根 Web.config 文件而不是对 ApplicationHost.config 进行配置更改。
|
有关 Appcmd.exe 的详细信息,请参阅 Appcmd.exe (IIS 7) 。
配置
本主题中的过程会影响以下配置元素:
- <sessionState>
- <sessionPageState>
有关 IIS 7 配置的详细信息,请参阅 MSDN 上的 IIS 7.0:IIS 设置架构(可能为英文页面)。
WMI
请使用以下 WMI 类、方法或属性执行此过程:
- SessionStateSection.Cookieless 属性“AutoDetect”标志
有关 WMI 和 IIS 的详细信息,请参阅 IIS 7 中的 Windows Management Instrumentation (WMI)。 有关与此过程关联的类、方法或属性的更多信息,请参阅 MSDN 网站上的 IIS WMI 提供程序参考(可能为英文页面)。