配置历史记录 <configHistory>
概述
<configHistory>
元素定义内置 IIS 配置历史记录功能的设置,该功能保留配置文件更改的运行历史记录。 此历史记录非常有助于从手动编辑配置文件时所犯的错误中恢复。
例如,如果对 ApplicationHost.config 文件进行更改,并且更改包含无效语法,则最终用户在浏览到网站时会看到以下错误:
HTTP 错误 503。 服务不可用。
若要解决此问题,只需将 ApplicationHost.config 从历史记录文件夹复制到 %windir%\system32\inetsrv\config 文件夹,即可将服务器还原到运行状态。
注意
配置历史记录功能要求“应用程序主机帮助服务”在服务器上运行;如果停止或禁用该服务,则对配置文件所做的更改不会保留在历史记录文件夹中。
兼容性
版本 | 说明 |
---|---|
IIS 10.0 | <configHistory> 元素在 IIS 10.0 中未进行修改。 |
IIS 8.5 | <configHistory> 元素在 IIS 8.5 中未进行修改。 |
IIS 8.0 | <configHistory> 元素在 IIS 8.0 中未进行修改。 |
IIS 7.5 | <configHistory> 元素在 IIS 7.5 中未进行修改。 |
IIS 7.0 | <configHistory> 元素是在 IIS 7.0 中引入的。 |
IIS 6.0 | <configHistory> 元素替换了 IIS 6.0 IIsComputerSetting 元数据库对象的 EnableHistory 和 MaxHistoryFiles 属性。 |
安装
<configHistory>
元素包含在 IIS 7 的默认安装中。
操作方式
IIS 7 中没有用于设置配置历史记录选项的用户界面。 有关如何以编程方式设置配置历史记录选项的示例,请参阅本文档的代码示例部分。
配置
特性
属性 | 说明 |
---|---|
enabled |
可选布尔属性。 指定是否启用配置历史记录。 默认值为 true 。 |
path |
可选的字符串属性。 指定配置历史记录文件的路径。 默认值为 %SystemDrive%\inetpub\history 。 |
maxHistories |
可选 uint 属性。 指定要保留的历史记录文件的最大数目。 默认值为 10 。 |
period |
可选的 timeSpan 属性。 指定 IIS 检查配置更改的时间间隔。 默认值为 00:02:00 (2 分钟)。 |
子元素
无。
配置示例
以下配置示例启用了配置历史记录功能,将历史记录文件的路径设置为 %SystemDrive%\inetpub\history,将历史记录文件的最大数目设置为 50,并将历史记录时间间隔设置为 5 分钟。
<system.applicationHost>
<configHistory enabled="true"
path="%SystemDrive%\inetpub\history"
maxHistories="50"
period="00:05:00" />
</system.applicationHost>
代码示例
以下代码示例启用了 IIS 7 的配置历史记录,并配置了以下选项:历史记录文件的路径设置为 %SystemDrive%\inetpub\history,历史记录文件最大数目设置为 50,检查配置设置的时间间隔设置为 5 分钟。
AppCmd.exe
appcmd.exe set config -section:system.applicationHost/configHistory /enabled:"True" /commit:apphost
appcmd.exe set config -section:system.applicationHost/configHistory /path:"%SystemDrive%\inetpub\history" /commit:apphost
appcmd.exe set config -section:system.applicationHost/configHistory /maxHistories:"50" /commit:apphost
appcmd.exe set config -section:system.applicationHost/configHistory /period:"00:05:00" /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 configHistorySection = config.GetSection("system.applicationHost/configHistory");
configHistorySection["enabled"] = true;
configHistorySection["path"] = @"%SystemDrive%\inetpub\history";
configHistorySection["maxHistories"] = 50;
configHistorySection["period"] = TimeSpan.Parse("00:05:00");
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 configHistorySection As ConfigurationSection = config.GetSection("system.applicationHost/configHistory")
configHistorySection("enabled") = True
configHistorySection("path") = "%SystemDrive%\inetpub\history"
configHistorySection("maxHistories") = 50
configHistorySection("period") = TimeSpan.Parse("00:05:00")
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var configHistorySection = adminManager.GetAdminSection("system.applicationHost/configHistory", "MACHINE/WEBROOT/APPHOST");
configHistorySection.Properties.Item("enabled").Value = true;
configHistorySection.Properties.Item("path").Value = "%SystemDrive%\\inetpub\\history";
configHistorySection.Properties.Item("maxHistories").Value = 50;
configHistorySection.Properties.Item("period").Value = "00:05:00";
adminManager.CommitChanges();
VBScript
Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set configHistorySection = adminManager.GetAdminSection("system.applicationHost/configHistory", "MACHINE/WEBROOT/APPHOST")
configHistorySection.Properties.Item("enabled").Value = True
configHistorySection.Properties.Item("path").Value = "%SystemDrive%\inetpub\history"
configHistorySection.Properties.Item("maxHistories").Value = 50
configHistorySection.Properties.Item("period").Value = "00:05:00"
adminManager.CommitChanges()