全局模块 <globalModules>
概述
<globalModules>
元素定义 IIS 7 服务器上安装的全局级模块。 <globalModules>
元素仅适用于服务器级别,因此在安装模块时,IIS 仅更新 ApplicationHost.config 文件。 你必须是服务器上的管理员才能安装本机模块。
IIS 7 通过本机模块实现其大部分请求处理。 使用 Service Manager 安装 IIS 7 角色服务或功能时,IIS 安装程序会向该模块的 <globalModules>
元素添加一个条目。 例如,在 IIS 7 服务器上安装基本身份验证角色服务时,安装程序会将 BasicAuthenticationModule 条目添加到 <globalModules>
元素。
安装第三方模块时,必须向该模块的 <globalModules>
元素添加一个条目。 要执行此操作,可以使用 IIS 管理器,可以手动编辑 ApplicationHost.config 文件,也可以使用 AppCmd.exe 命令行工具。
若要在应用程序中启用模块,必须编辑应用程序的 <module>
元素。
兼容性
版本 | 说明 |
---|---|
IIS 10.0 | <globalModules> 元素在 IIS 10.0 中未进行修改。 |
IIS 8.5 | <globalModules> 元素在 IIS 8.5 中未进行修改。 |
IIS 8.0 | <globalModules> 元素在 IIS 8.0 中未进行修改。 |
IIS 7.5 | <globalModules> 元素未在 IIS 7.5 中进行修改。 |
IIS 7.0 | <globalModules> 元素是在 IIS 7.0 中引入的。 |
IIS 6.0 | 空值 |
安装
<globalModules>
元素包含在 IIS 7 的默认安装中。
操作方式
如何安装本机模块
打开 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) 管理器”。
在“连接”窗格中,单击要向其添加本机模块的服务器连接。
在“操作”窗格中,单击“配置本机模块...”
在“注册本机模块”对话框中的“名称”框中,键入本机模块的名称。
在“配置本机模块”对话框中,选择刚刚注册的本机模块的选项,单击“确定”,然后再次单击“确定”。 这样,本机模块就可以运行了,并且可用于 Web 服务器上的站点和应用程序。
注意
如果不想启用本机模块运行,请清除本机模块的选项,然后单击“确定”。
(可选)如果不希望在配置系统中较低级别重写本机模块,则可以锁定本机模块。 在“模块”页上,选择该模块,然后单击“操作”窗格中的“锁定”。
如何启用本机模块
打开 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) 管理器”。
导航到要管理的服务器、站点或应用程序级别。
在服务器、站点或应用程序主页上,双击“模块”。
在“操作”窗格中,单击“配置本机模块...”
配置
<globalModules>
元素都包含一组 <add>
元素。 集合中的每个元素都配置服务器的全局模块。
特性
无。
子元素
元素 | 说明 |
---|---|
add |
可选元素。 将本机模块添加到全局模块的集合中。 |
clear |
可选元素。 从全局模块集合中移除对本机模块的所有引用。 |
remove |
可选元素。 从全局模块集合中移除对特定本机模块的引用。 |
配置示例
下面的示例演示了一个 IIS 7 <globalModules>
节,其中包含 Web 服务器最低安装中包含的所有模块的条目。 还包括 BasicAuthenticationModule 的条目,还有第三方模块 ImageCopyrightModule 的条目。
<globalModules>
<add name="UriCacheModule"
image="%windir%\System32\inetsrv\cachuri.dll" />
<add name="FileCacheModule"
image="%windir%\System32\inetsrv\cachfile.dll" />
<add name="TokenCacheModule"
image="%windir%\System32\inetsrv\cachtokn.dll" />
<add name="HttpCacheModule"
image="%windir%\System32\inetsrv\cachhttp.dll" />
<add name="StaticCompressionModule"
image="%windir%\System32\inetsrv\compstat.dll" />
<add name="DefaultDocumentModule"
image="%windir%\System32\inetsrv\defdoc.dll" />
<add name="DirectoryListingModule"
image="%windir%\System32\inetsrv\dirlist.dll" />
<add name="ProtocolSupportModule"
image="%windir%\System32\inetsrv\protsup.dll" />
<add name="StaticFileModule"
image="%windir%\System32\inetsrv\static.dll" />
<add name="AnonymousAuthenticationModule"
image="%windir%\System32\inetsrv\authanon.dll" />
<add name="RequestFilteringModule"
image="%windir%\System32\inetsrv\modrqflt.dll" />
<add name="CustomErrorModule"
image="%windir%\System32\inetsrv\custerr.dll" />
<add name="HttpLoggingModule"
image="%windir%\System32\inetsrv\loghttp.dll" />
<add name="RequestMonitorModule"
image="%windir%\System32\inetsrv\iisreqs.dll" />
<add name="BasicAuthenticationModule"
image="%windir%\System32\inetsrv\authbas.dll" />
<add name="ImageCopyrightModule"
image="%windir%\System32\inetsrv\ImageCopyrightModule.dll" />
</globalModules>
代码示例
以下示例在 IIS 7 上安装名为 ImageCopyrightModule 的本机模块,并在整个服务器上自动启用它。
AppCmd.exe
appcmd.exe install module /name:ImageCopyrightModule /image:%windir%\system32\inetsrv\imageCopyrightModule.dll
还可以使用以下语法:
appcmd.exe set config -section:system.webServer/globalModules /+"[name='ImageCopyrightModule',image='%windir%\system32\inetsrv\imageCopyrightModule.dll']" /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 globalModulesSection = config.GetSection("system.webServer/globalModules");
ConfigurationElementCollection globalModulesCollection = globalModulesSection.GetCollection();
ConfigurationElement addElement = globalModulesCollection.CreateElement("add");
addElement["name"] = @"ImageCopyrightModule";
addElement["image"] = @"%windir%\system32\inetsrv\imageCopyrightModule.dll";
globalModulesCollection.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 globalModulesSection As ConfigurationSection = config.GetSection("system.webServer/globalModules")
Dim globalModulesCollection As ConfigurationElementCollection = globalModulesSection.GetCollection
Dim addElement As ConfigurationElement = globalModulesCollection.CreateElement("add")
addElement("name") = "ImageCopyrightModule"
addElement("image") = "%windir%\system32\inetsrv\imageCopyrightModule.dll"
globalModulesCollection.Add(addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var globalModulesSection = adminManager.GetAdminSection("system.webServer/globalModules", "MACHINE/WEBROOT/APPHOST");
var globalModulesCollection = globalModulesSection.Collection;
var addElement = globalModulesCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "ImageCopyrightModule";
addElement.Properties.Item("image").Value = "%windir%\\system32\\inetsrv\\imageCopyrightModule.dll";
globalModulesCollection.AddElement(addElement);
adminManager.CommitChanges();
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set globalModulesSection = adminManager.GetAdminSection("system.webServer/globalModules", "MACHINE/WEBROOT/APPHOST")
Set globalModulesCollection = globalModulesSection.Collection
Set addElement = globalModulesCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "ImageCopyrightModule"
addElement.Properties.Item("image").Value = "%windir%\system32\inetsrv\imageCopyrightModule.dll"
globalModulesCollection.AddElement addElement
adminManager.CommitChanges()