服务自动启动提供程序 <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 配置编辑器功能。
打开 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) 管理器”。
在“连接”窗格中,单击服务器名称。
在“Section”下拉菜单中,展开“system.applicationHost”,然后单击“ serviceAutoStartProviders”。
单击“(集合)”字段右侧的省略号 (...)。
在“操作”窗格中,单击“添加”。
当“集合编辑器”对话框出现时:
在“操作”窗格中,单击“应用”。
注意
本部分介绍有关如何使用 IIS 配置编辑器修改 IIS 设置。 错误编辑 IIS 配置设置可能会严重损坏 IIS 安装。 因此,按以下步骤操作时请务必谨慎。 为提高安全性,在使用 IIS 配置编辑器进行任何修改之前,必须备份 IIS 配置设置。 有关如何备份 IIS 配置设置以及如何使用 IIS 配置编辑器的详细信息,请参阅以下主题:
- 如何备份 IIS 7 配置
https://technet.microsoft.com/library/dd819406.aspx - 配置编辑器页面
https://technet.microsoft.com/library/dd569081.aspx
配置
<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()