Поделиться через


Application Initialization <applicationInitialization>

Общие сведения

Элемент <applicationInitialization> указывает, что инициализация веб-приложения выполняется заранее перед получением запроса. Приложение может запускаться быстрее, если последовательности инициализации, такие как инициализация подключений, подготовка кэшей в памяти, выполнение запросов и компиляция кода страницы, выполняются до получения HTTP-запроса. Инициализация приложения может автоматически запускать процесс инициализации при каждом запуске приложения. Инициализация приложения не обязательно ускоряет процесс инициализации; он запускает процесс раньше.

Инициализация приложения также позволяет улучшить взаимодействие с пользователем во время инициализации, перенаправляя запрос на статические страницы, такие как заполнитель или экран-заставка. После загрузки сайта он перестанет сопоставлять управляемый запрос со статической страницей и начнет обслуживать динамическое содержимое. При использовании атрибута remapManagedRequestsTo в <applicationInitialization> элементе можно сопоставить управляемый запрос только с одной страницей. Однако инициализацию приложения можно использовать в сочетании с модулем переопределения URL-адресов iis вне диапазона для поддержки более сложной обработки заполнителя содержимого, включая сложные сопоставления с предварительно созданным статическим содержимым.

Помимо инициализации приложений можно включить запуск процесса инициализации при каждом запуске пула приложений. Для этого задав для атрибута preLoadEnabled в элементе <application> значение true. Для этого в элементе должен быть установлен режим <applicationPool> запуска AlwaysRunning.

Совместимость

Версия Примечания
IIS 10.0 Элемент <applicationInitialization> не был изменен в IIS 10.0.
IIS 8,5 Элемент <applicationInitialization> не был изменен в IIS 8.5.
IIS 8,0 Элемент <applicationInitialization> появился в IIS 8.0.
IIS 7,5 Н/Д
IIS 7.0 Н/Д
IIS 6,0 Н/Д

Настройка

Для поддержки инициализации приложений на веб-сервере необходимо установить роль или компонент инициализации приложений.

Windows Server 2012 или Windows Server 2012 R2

  1. На панели задач щелкните Диспетчер сервера.
  2. В диспетчер сервера откройте меню Управление и выберите пункт Добавить роли и компоненты.
  3. В мастере добавления ролей и компонентов нажмите кнопку Далее. Выберите тип установки и нажмите кнопку Далее. Выберите целевой сервер и нажмите кнопку Далее.
  4. На странице Роли сервера разверните узел Веб-сервер (IIS),веб-сервер, узел Разработка приложений, а затем выберите Инициализация приложения. Щелкните Далее.
    Снимок экрана: панель .
  5. На странице Выбор компонентов нажмите кнопку Далее.
  6. На странице Подтверждение выбранных элементов для установки нажмите кнопку Установить.
  7. На странице Результаты нажмите кнопку Закрыть.

Windows 8 или Windows 8.1

  1. На начальном экране переместите указатель в левый нижний угол, щелкните правой кнопкой мыши кнопку Пуск и выберите пункт панель управления.
  2. В панель управления щелкните Программы и компоненты, а затем — Включить или выключить компоненты Windows.
  3. Разверните узел Службы IIS, Веб-службы, Компоненты разработки приложений, а затем выберите Инициализация приложений.
    Снимок экрана: панель
  4. Нажмите кнопку ОК.
  5. Щелкните Закрыть.

Инструкции

Настройка инициализации приложения

  1. Откройте диспетчер служб IIS.

    • Если вы используете Windows Server 2012 или более поздней версии:

      • На панели задач щелкните диспетчер сервера, инструменты, а затем диспетчер служб IIS.
    • Если вы используете Windows 8 или более поздней версии:

      • Удерживая нажатой клавишу Windows, нажмите букву X и щелкните панель управления.
      • Щелкните Администрирование, а затем дважды щелкните диспетчер служб IIS.
  2. В области Подключения выберите сервер или разверните сервер, разверните узел Сайты, а затем выберите сайт.

  3. В области Главная дважды щелкните компонент Редактор конфигураций .

  4. Если вы выбрали сайт, выберите <имя> сайта Web.config в текстовом поле От , а затем выберите system.webServer/applicationInitialization в текстовом поле Раздел .

  5. Если вы выбрали сервер, выберите system.webServer/applicationInitialization в текстовом поле Раздел .

    Снимок экрана: область редактора конфигураций. Коллекция выделена.

  6. Чтобы указать имя статического файла, возвращаемого во время инициализации, присвойте remapManagedRequestsTo имя файла.

  7. Если вы не хотите загружать управляемые модули, задайте для параметра skipManagedModules значение true.

  8. Чтобы указать, что процесс инициализации инициируется автоматически при перезапуске приложения, установите для параметра doAppInitAfterRestart значение true.

  9. Чтобы указать приложение или приложения для инициализации при перезапуске приложения, щелкните строку (Коллекция) и нажмите кнопку с многоточием.

  10. В редакторе коллекций, чтобы добавить приложение для инициализации, нажмите кнопку Добавить, щелкните hostName, а затем задайте hostName в качестве имени узла. Щелкните initializationPage и задайте URL-адрес приложения. Закройте диалоговое окно.

    Снимок экрана: область редактора коллекций. Имя узла выделено в поле Свойства.

  11. Щелкните Применить в области Действия.

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

Элемент <applicationInitialization> настраивается на уровне сервера, сайта или приложения.

Атрибуты

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

Указывает, что процесс инициализации инициируется автоматически при каждом перезапуске приложения. Обратите внимание, что этот атрибут отличается от атрибута preLoadEnabled в элементе приложения, который указывает, что процесс инициализации запускается после перезапуска пула приложений.

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

Указывает страницу для повторного сопоставления запроса во время инициализации приложения.

Значение по умолчанию — "".
skipManagedModules Дополнительный логический атрибут.

Указывает, загружаются ли управляемые модули (false) или не загружаются (true) во время инициализации.

Значение по умолчанию — false.

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

Элемент Описание
add Необязательный элемент.

Указывает приложение для инициализации при перезапуске приложения.

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

В следующем примере показана конфигурация инициализации приложения.

<system.webServer>
   <applicationInitialization
      doAppInitAfterRestart="true"
      skipManagedModules="true"
      remapManagedRequestsTo="filename.htm">
      <add initializationPage="/default.aspx" hostName="myhost"/>
   </applicationInitialization>
</system.webServer>

Пример кода

В следующих примерах настраивается <applicationInitialization> для сайта.

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/applicationInitialization /remapManagedRequestsTo:"HelloJoe.htm" /skipManagedModules:"True" /doAppInitAfterRestart:"True"  /commit:apphost

appcmd.exe set config "Default Web Site" -section:system.webServer/applicationInitialization /+"[initializationPage='JoesSite.htm',hostName='JoesHost']" /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 applicationInitializationSection = config.GetSection("system.webServer/applicationInitialization", "Default Web Site");
            applicationInitializationSection["remapManagedRequestsTo"] = @"HelloJoe.htm";
            applicationInitializationSection["skipManagedModules"] = true;
            applicationInitializationSection["doAppInitAfterRestart"] = true;
            
            ConfigurationElementCollection applicationInitializationCollection = applicationInitializationSection.GetCollection();
            
            ConfigurationElement addElement = applicationInitializationCollection.CreateElement("add");
            addElement["initializationPage"] = @"JoesSite.htm";
            addElement["hostName"] = @"JoesHost";
            applicationInitializationCollection.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 applicationInitializationSection As ConfigurationSection = config.GetSection("system.webServer/applicationInitialization", "Default Web Site")
         applicationInitializationSection("remapManagedRequestsTo") = "HelloJoe.htm"
         applicationInitializationSection("skipManagedModules") = true
         applicationInitializationSection("doAppInitAfterRestart") = true
         Dim applicationInitializationCollection As ConfigurationElementCollection = applicationInitializationSection.GetCollection
         Dim addElement As ConfigurationElement = applicationInitializationCollection.CreateElement("add")
         addElement("initializationPage") = "JoesSite.htm"
         addElement("hostName") = "JoesHost"
         applicationInitializationCollection.Add(addElement)
         serverManager.CommitChanges
     End Sub
 End Module

JavaScript

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

var applicationInitializationSection = adminManager.GetAdminSection("system.webServer/applicationInitialization", "MACHINE/WEBROOT/APPHOST/Default Web Site");
applicationInitializationSection.Properties.Item("remapManagedRequestsTo").Value = "HelloJoe.htm";
applicationInitializationSection.Properties.Item("skipManagedModules").Value = true;
applicationInitializationSection.Properties.Item("doAppInitAfterRestart").Value = true;

var applicationInitializationCollection = applicationInitializationSection.Collection;

var addElement = applicationInitializationCollection.CreateNewElement("add");
addElement.Properties.Item("initializationPage").Value = "JoesSite.htm";
addElement.Properties.Item("hostName").Value = "JoesHost";
applicationInitializationCollection.AddElement(addElement);

adminManager.CommitChanges();

VBScript

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

Set applicationInitializationSection = adminManager.GetAdminSection("system.webServer/applicationInitialization", "MACHINE/WEBROOT/APPHOST/Default Web Site")
applicationInitializationSection.Properties.Item("remapManagedRequestsTo").Value = "HelloJoe.htm"
applicationInitializationSection.Properties.Item("skipManagedModules").Value = true
applicationInitializationSection.Properties.Item("doAppInitAfterRestart").Value = true

Set applicationInitializationCollection = applicationInitializationSection.Collection

Set addElement = applicationInitializationCollection.CreateNewElement("add")
addElement.Properties.Item("initializationPage").Value = "JoesSite.htm"
addElement.Properties.Item("hostName").Value = "JoesHost"
applicationInitializationCollection.AddElement(addElement)

adminManager.CommitChanges()

PowerShell

Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/applicationInitialization" -name "remapManagedRequestsTo" -value "HelloJoe.htm"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/applicationInitialization" -name "skipManagedModules" -value "True"
Set-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/applicationInitialization" -name "doAppInitAfterRestart" -value "True"

Add-WebConfigurationProperty -pspath 'MACHINE/WEBROOT/APPHOST' -location 'Default Web Site' -filter "system.webServer/applicationInitialization" -name "." -value @{initializationPage='JoesSite.htm';hostName='JoesHost'}