App Defaults applicationDefaults <>

Обзор

Элемент <applicationDefaults> элемента <site> задает параметры приложения по умолчанию для всех приложений на родительском сайте.

Замечание

Если один и тот же атрибут или дочерний элемент настроен как в разделе, так <applicationDefaults> и в <application> разделе для определенного приложения, конфигурация в <application> этом разделе используется для этого приложения.

Compatibility

Версия Примечания.
IIS 10.0 Элемент <applicationDefaults> не был изменен в IIS 10.0.
IIS 8.5 Элемент <applicationDefaults> не был изменен в IIS 8.5.
IIS 8.0 Атрибут preloadEnabled был добавлен в IIS 8.0.
IIS 7.5 Элемент <applicationDefaults> был обновлен, чтобы включить serviceAutoStartEnabled и serviceAutoStartProvider атрибуты.
IIS 7.0 Элемент <applicationDefaults><site> коллекции появился в IIS 7.0.
IIS 6.0 Элемент <applicationDefaults> аналогиен настройке параметров приложения на уровне сайта в метабазе IIS 6.0.

Настройка

Элемент <applicationDefaults> элемента <site> включается в установку IIS 7 и более поздних версий по умолчанию.

Как сделать

Настройка параметров приложения по умолчанию для сайта

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

    • Если вы используете Windows Server 2012 или Windows Server 2012 R2:

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

      • Удерживайте клавишу Windows , нажимайте букву X, а затем нажмите кнопку "Панель управления".
      • Щелкните "Администрирование" и дважды щелкните диспетчер служб IIS.
    • Если вы используете Windows Server 2008 или Windows Server 2008 R2:

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

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

  3. На панели "Главная " сайта щелкните "Просмотр приложений " на панели "Действия ".
    Снимок экрана: главная страница веб-сайта по умолчанию, показывающая параметры dot NET Compilation, dot NET Globalization и dot NET Profile.

  4. В области приложений сайта нажмите кнопку "Задать значения по умолчанию приложения"... на панели "Действия ".
    Снимок экрана: область

  5. В диалоговом окне "Значения по умолчанию приложения" укажите параметры приложения по умолчанию для сайта и нажмите кнопку "ОК".
    Снимок экрана: разделы

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

Attributes

Свойство Description
applicationPool Необязательный строковый атрибут.

Указывает пул приложений по умолчанию, которому назначаются все приложения на родительском сайте.
enabledProtocols Необязательный строковый атрибут.

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

Указывает виртуальный путь по умолчанию для всех приложений на родительском сайте.
preloadEnabled Дополнительный логический атрибут.

Указывает, что IIS имитирует запрос пользователя на страницу по умолчанию приложения или виртуального каталога, чтобы он инициализирован. В результате IIS запускает приложение при запуске пула приложений без получения запроса. Это повышает производительность, выполняя такие задачи инициализации, как загрузка управляемых модулей и компиляция управляемого кода. Журнал не создается в журналах IIS. Для параметра startMode пула приложений необходимо задать значение AlwaysRunning.

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

Значение true , если автозапуск включен для этого приложения; в противном случае значение false.

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

Указывает имя поставщика автозапуска, который будет использоваться службой активации процесса Windows (WAS), если serviceAutoStartEnabled задано значение true.

Значение по умолчанию отсутствует.

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

Нет.

Пример конфигурации

Следующий пример конфигурации задает пул приложений по умолчанию для веб-сайта по умолчанию значение DefaultAppPool.

<sites>
   <site name="Default Web Site" id="1" serverAutoStart="true">
      <application path="/" applicationPool="Classic .NET AppPool">
         <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
      </application>
      <bindings>
         <binding protocol="http" bindingInformation="*:80:" />
      </bindings>
      <applicationDefaults applicationPool="DefaultAppPool" />
   </site>
</sites>

Пример кода

В следующих примерах кода для пула приложений по умолчанию для веб-сайта по умолчанию задано значение DefaultAppPool.

AppCmd.exe

appcmd.exe set config -section:system.applicationHost/sites "/[name='Default Web Site'].applicationDefaults.applicationPool:DefaultAppPool" /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 sitesSection = config.GetSection("system.applicationHost/sites");

         ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();
         ConfigurationElement siteElement = FindElement(sitesCollection, "site", "name", @"Default Web Site");
         if (siteElement == null) throw new InvalidOperationException("Element not found!");

         ConfigurationElement applicationDefaultsElement = siteElement.GetChildElement("applicationDefaults");
         applicationDefaultsElement["applicationPool"] = @"DefaultAppPool";

         serverManager.CommitChanges();
      }
   }

   private static ConfigurationElement FindElement(ConfigurationElementCollection collection, string elementTagName, params string[] keyValues)
   {
      foreach (ConfigurationElement element in collection)
      {
         if (String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase))
         {
            bool matches = true;
            for (int i = 0; i < keyValues.Length; i += 2)
            {
               object o = element.GetAttributeValue(keyValues[i]);
               string value = null;
               if (o != null)
               {
                  value = o.ToString();
               }
               if (!String.Equals(value, keyValues[i + 1], StringComparison.OrdinalIgnoreCase))
               {
                  matches = false;
                  break;
               }
            }
            if (matches)
            {
               return element;
            }
         }
      }
      return null;
   }
}

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 sitesSection As ConfigurationSection = config.GetSection("system.applicationHost/sites")

      Dim sitesCollection As ConfigurationElementCollection = sitesSection.GetCollection
      Dim siteElement As ConfigurationElement = FindElement(sitesCollection, "site", "name", "Default Web Site")
      If (siteElement Is Nothing) Then
         Throw New InvalidOperationException("Element not found!")
      End If

      Dim applicationDefaultsElement As ConfigurationElement = siteElement.GetChildElement("applicationDefaults")
      applicationDefaultsElement("applicationPool") = "DefaultAppPool"

      serverManager.CommitChanges()
   End Sub

   Private Function FindElement(ByVal collection As ConfigurationElementCollection, ByVal elementTagName As String, ByVal ParamArray keyValues() As String) As ConfigurationElement
      For Each element As ConfigurationElement In collection
         If String.Equals(element.ElementTagName, elementTagName, StringComparison.OrdinalIgnoreCase) Then
            Dim matches As Boolean = True
            Dim i As Integer
            For i = 0 To keyValues.Length - 1 Step 2
               Dim o As Object = element.GetAttributeValue(keyValues(i))
               Dim value As String = Nothing
               If (Not (o) Is Nothing) Then
                  value = o.ToString
               End If
               If Not String.Equals(value, keyValues((i + 1)), StringComparison.OrdinalIgnoreCase) Then
                  matches = False
                  Exit For
               End If
            Next
            If matches Then
               Return element
            End If
         End If
      Next
      Return Nothing
   End Function


End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST");

var sitesCollection = sitesSection.Collection;
var siteElementPos = FindElement(sitesCollection, "site", ["name", "Default Web Site"]);
if (siteElementPos == -1) throw "Element not found!";
var siteElement = sitesCollection.Item(siteElementPos);

var applicationDefaultsElement = siteElement.ChildElements.Item("applicationDefaults");
applicationDefaultsElement.Properties.Item("applicationPool").Value = "DefaultAppPool";

adminManager.CommitChanges();

function FindElement(collection, elementTagName, valuesToMatch) {
   for (var i = 0; i < collection.Count; i++) {
      var element = collection.Item(i);
      if (element.Name == elementTagName) {
         var matches = true;
         for (var iVal = 0; iVal < valuesToMatch.length; iVal += 2) {
            var property = element.GetPropertyByName(valuesToMatch[iVal]);
            var value = property.Value;
            if (value != null) {
               value = value.toString();
            }
            if (value != valuesToMatch[iVal + 1]) {
               matches = false;
               break;
            }
         }
         if (matches) {
            return i;
         }
      }
   }
   return -1;
}

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set sitesSection = adminManager.GetAdminSection("system.applicationHost/sites", "MACHINE/WEBROOT/APPHOST")

Set sitesCollection = sitesSection.Collection
siteElementPos = FindElement(sitesCollection, "site", Array("name", "Default Web Site"))
If (siteElementPos = -1) Then
   WScript.Echo "Element not found!"
   WScript.Quit
End If
Set siteElement = sitesCollection.Item(siteElementPos)

Set applicationDefaultsElement = siteElement.ChildElements.Item("applicationDefaults")
applicationDefaultsElement.Properties.Item("applicationPool").Value = "DefaultAppPool"

adminManager.CommitChanges()

Function FindElement(collection, elementTagName, valuesToMatch)
   For i = 0 To CInt(collection.Count) - 1
      Set element = collection.Item(i)
      If element.Name = elementTagName Then
         matches = True
         For iVal = 0 To UBound(valuesToMatch) Step 2
            Set property = element.GetPropertyByName(valuesToMatch(iVal))
            value = property.Value
            If Not IsNull(value) Then
               value = CStr(value)
            End If
            If Not value = CStr(valuesToMatch(iVal + 1)) Then
               matches = False
               Exit For
            End If
         Next
         If matches Then
            Exit For
         End If
      End If
   Next
   If matches Then
      FindElement = i
   Else
      FindElement = -1
   End If
End Function