服务自动启动提供程序 <serviceAutoStartProviders>

概述

<serviceAutoStartProviders> 元素指定当应用程序池的 startMode 属性设置为 AlwaysRunning 时,Windows 进程激活服务 (WAS) 将自动加载的托管程序集集合。 此集合允许开发人员指定在服务任何 HTTP 请求之前执行初始化任务的程序集。 例如,应用程序开发人员可能想要在 IIS 开始处理请求之前为应用程序建立初始数据库连接;这将使应用程序能够更快地执行需要往返于数据库的初始请求。

有关如何将应用程序池配置为自动启动的详细信息,请参阅 <applicationPools> 主题。

注意

该元素是在 IIS 7.5 中引入的。

兼容性

版本 说明
IIS 10.0 <serviceAutoStartProviders> 元素在 IIS 10.0 中未进行修改。
IIS 8.5 <serviceAutoStartProviders> 元素在 IIS 8.5 中未进行修改。
IIS 8.0 <serviceAutoStartProviders> 元素在 IIS 8.0 中未进行修改。
IIS 7.5 <serviceAutoStartProviders> 元素是在 IIS 7.5 中引入的。
IIS 7.0 空值
IIS 6.0 空值

安装

<serviceAutoStartProviders> 元素包含在 IIS 7.5 的默认安装中。

操作方式

如何配置服务自动启动提供程序

注意

没有可用于配置 <serviceAutoStartProviders> 元素的直接用户界面;因此,以下步骤将使用 IIS 配置编辑器功能。

  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. 在“连接”窗格中,单击服务器名称。

  3. 在“主页”窗格中,双击“配置编辑器”功能。
    Screenshot of Server Home pane displaying Configuration Editor selected.

  4. 在“Section”下拉菜单中,展开“system.applicationHost”,然后单击“ serviceAutoStartProviders”。
    Screenshot of Configuration Editor page showing system dot application Host tab expanded.

  5. 单击“(集合)”字段右侧的省略号 (...)。

  6. 在“操作”窗格中,单击“添加”。

  7. 当“集合编辑器”对话框出现时:

    • 在“名称”字段中输入自动启动提供程序的名称。 例如:
      “MyAutostartProvider”
    • 在“类型”字段中输入自动启动程序集的托管类型。 例如:
      “MyAutostartProvider, MyAutostartProvider, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73”
    • 关闭“集合编辑器”对话框。
      Screenshot of Collection Editor dialog box showing fields for name and managed type of auto start provider.
  8. 在“操作”窗格中,单击“应用”

注意

本部分介绍有关如何使用 IIS 配置编辑器修改 IIS 设置。 错误编辑 IIS 配置设置可能会严重损坏 IIS 安装。 因此,按以下步骤操作时请务必谨慎。 为提高安全性,在使用 IIS 配置编辑器进行任何修改之前,必须备份 IIS 配置设置。 有关如何备份 IIS 配置设置以及如何使用 IIS 配置编辑器的详细信息,请参阅以下主题:

配置

<serviceAutoStartProviders> 元素在 ApplicationHost.config 文件中的全局级别配置。

特性

无。

子元素

元素 说明
add 可选元素。

将提供程序添加到自动启动提供程序集合中。
clear 可选元素。

清除自动启动提供程序的集合。
remove 可选元素。

从自动启动提供程序的集合中移除一个提供程序。

配置示例

以下示例显示 <serviceAutoStartProviders> 元素,此元素向集合添加自定义自动启动提供程序。

<serviceAutoStartProviders>
   <add name="MyAutostartProvider" type="MyAutostartProvider, MyAutostartProvider, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73" />
</serviceAutoStartProviders>

代码示例

以下示例将示例提供程序添加到自动启动提供程序的集合。

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/serviceAutoStartProviders /+"[name='MyAutostartProvider',type='MyAutostartProvider, MyAutostartProvider, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73']" /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 serviceAutoStartProvidersSection = config.GetSection("system.applicationHost/serviceAutoStartProviders");
         ConfigurationElementCollection serviceAutoStartProvidersCollection = serviceAutoStartProvidersSection.GetCollection();

         ConfigurationElement addElement = serviceAutoStartProvidersCollection.CreateElement("add");
         addElement["name"] = @"MyAutostartProvider";
         addElement["type"] = @"MyAutostartProvider, MyAutostartProvider, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73";
         serviceAutoStartProvidersCollection.Add(addElement);

         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 serviceAutoStartProvidersSection As ConfigurationSection = config.GetSection("system.applicationHost/serviceAutoStartProviders")
      Dim serviceAutoStartProvidersCollection As ConfigurationElementCollection = serviceAutoStartProvidersSection.GetCollection

      Dim addElement As ConfigurationElement = serviceAutoStartProvidersCollection.CreateElement("add")
      addElement("name") = "MyAutostartProvider"
      addElement("type") = "MyAutostartProvider, MyAutostartProvider, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73"
      serviceAutoStartProvidersCollection.Add(addElement)

      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

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

var serviceAutoStartProvidersSection = adminManager.GetAdminSection("system.applicationHost/serviceAutoStartProviders", "MACHINE/WEBROOT/APPHOST");
var serviceAutoStartProvidersCollection = serviceAutoStartProvidersSection.Collection;

var addElement = serviceAutoStartProvidersCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "MyAutostartProvider";
addElement.Properties.Item("type").Value = "MyAutostartProvider, MyAutostartProvider, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73";
serviceAutoStartProvidersCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set serviceAutoStartProvidersSection = adminManager.GetAdminSection("system.applicationHost/serviceAutoStartProviders", "MACHINE/WEBROOT/APPHOST")
Set serviceAutoStartProvidersCollection = serviceAutoStartProvidersSection.Collection

Set addElement = serviceAutoStartProvidersCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "MyAutostartProvider"
addElement.Properties.Item("type").Value = "MyAutostartProvider, MyAutostartProvider, version=1.0.0.0, Culture=neutral, PublicKeyToken=426f62526f636b73"
serviceAutoStartProvidersCollection.AddElement(addElement)

adminManager.CommitChanges()