Configuration History <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> заменяет атрибуты EnableHistory и MaxHistoryFiles объекта метабазыIIsComputerSetting IIS 6.0.

Настройка

Элемент <configHistory> включен в установку iis 7 по умолчанию.

Инструкции

Отсутствует пользовательский интерфейс для настройки параметров журнала конфигурации для IIS 7. Примеры установки параметров журнала конфигурации программным способом см. в разделе Примеры кода этого документа.

Конфигурация

Атрибуты

Атрибут Описание
enabled Дополнительный логический атрибут.

Указывает, включен ли журнал конфигурации.

Значение по умолчанию — true.
path Необязательный строковый атрибут.

Указывает путь к файлам журнала конфигурации.

Значение по умолчанию — %SystemDrive%\inetpub\history.
maxHistories Необязательный атрибут uint.

Указывает максимальное количество файлов журнала для хранения.

Значение по умолчанию — 10.
period Необязательный атрибут timeSpan.

Указывает интервал, используемый службами IIS для проверка изменений конфигурации.

Значение по умолчанию — 00:02:00 (две минуты).

Дочерние элементы

Отсутствует.

Образец конфигурации

Следующий пример конфигурации включает функцию журнала конфигурации, устанавливает путь к файлам журнала %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 для настройки этих параметров для параметра 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()