HTTP 协议设置 <httpProtocol>

概述

概述 <httpProtocol> 元素配置 HTTP 保持的连接以及 Internet Information Services (IIS) 7 发送到 Web 客户端的自定义和间接响应标头。

浏览器通常会发出多个请求,以便下载整个网页。 为了增强服务器性能,大多数 Web 浏览器请求服务器在这些多个请求中保持连接打开状态,这是一项称为 HTTP 保持活动的功能。 如果没有 HTTP 保持活动,如果浏览器对包含多个元素(如图形)的页面发出多个请求,可能需要为每个元素建立单独的连接。 这些额外的请求和连接需要额外的服务器活动和资源,从而降低服务器效率。 其他连接也会使浏览器速度变慢且响应能力下降,尤其是在连接速度缓慢时。

兼容性

版本 说明
IIS 10.0 <httpProtocol> 元素在 IIS 10.0 中未进行修改。
IIS 8.5 <httpProtocol> 元素在 IIS 8.5 中未进行修改。
IIS 8.0 <httpProtocol> 元素在 IIS 8.0 中未进行修改。
IIS 7.5 <httpProtocol> 元素未在 IIS 7.5 中进行修改。
IIS 7.0 <httpProtocol> 元素是在 IIS 7.0 中引入的。
IIS 6.0 <httpProtocol> 元素的 allowKeepAlive 属性替换 IIS 6.0 AllowKeepAlive 元数据库属性。

安装

<httpProtocol> 元素包含在 IIS 7 的默认安装中。

操作方式

如何为网站或应用程序启用 HTTP 保持活动

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

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

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

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

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

      • 在任务栏上,单击“开始”,然后单击“控制面板”。
      • 双击“管理工具”,然后双击“Internet Information Services (IIS) 管理器”。
  2. 在“连接”窗格中,转到要为其设置自定义 HTTP 标头的站点、应用程序或目录。

  3. 在“主页”窗格中,双击“HTTP 响应标头”。
    Screenshot of the Default Web Site Home page. The H T T P Response Headers icon is highlighted.

  4. 在“HTTP 响应头”页的“操作”窗格中单击“设置自定义标头...”。
    Screenshot of the H T T P Response Headers page.

  5. 在“设置通用 HTTP 响应头”对话框中,选中该框以启用 HTTP 保持活动,然后单击“确定”
    Screenshot of the Set Common H T T P Response Headers dialog box.

配置

特性

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

指定是 (true) 否 (false) 允许保持活动处理。

默认值为 true

子元素

元素 说明
customHeaders 配置在 Web 服务器的响应中返回的自定义响应标头。
redirectHeaders 配置仅在 Web 服务器重定向请求时通过响应返回的响应标头。

配置示例

以下代码示例为默认网站启用 HTTP 保持活动。

<configuration>
   <system.webServer>
      <httpProtocol allowKeepAlive="true" />
   </system.webServer>
</configuration>

注意

以下默认 <httpProtocol> 元素是在 IIS 7 的 ApplicationHost.config 文件中配置的。

<httpProtocol>
   <customHeaders>
      <clear />
      <add name="X-Powered-By" value="ASP.NET" />
   </customHeaders>
   <redirectHeaders>
      <clear />
   </redirectHeaders>
</httpProtocol>

代码示例

以下代码示例为默认网站启用 HTTP 保持活动。

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/httpProtocol /allowKeepAlive:"True"

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.GetWebConfiguration("Default Web Site");

         ConfigurationSection httpProtocolSection = config.GetSection("system.webServer/httpProtocol");
         httpProtocolSection["allowKeepAlive"] = true;

         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.GetWebConfiguration("Default Web Site")

      Dim httpProtocolSection As ConfigurationSection = config.GetSection("system.webServer/httpProtocol")
      httpProtocolSection("allowKeepAlive") = True

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site";

var httpProtocolSection = adminManager.GetAdminSection("system.webServer/httpProtocol", "MACHINE/WEBROOT/APPHOST/Default Web Site");
httpProtocolSection.Properties.Item("allowKeepAlive").Value = true;

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST/Default Web Site"

Set httpProtocolSection = adminManager.GetAdminSection("system.webServer/httpProtocol", "MACHINE/WEBROOT/APPHOST/Default Web Site")
httpProtocolSection.Properties.Item("allowKeepAlive").Value = True

adminManager.CommitChanges()