앱 기본값 <applicationDefaults>
개요
<applicationDefaults>
요소의 <site>
요소는 부모 사이트의 모든 애플리케이션에 대한 기본 애플리케이션 설정을 지정합니다.
참고
특정 애플리케이션에 대한 섹션과 <application>
섹션 모두에서 <applicationDefaults>
동일한 특성 또는 자식 요소가 구성된 경우 섹션의 <application>
구성이 해당 애플리케이션에 사용됩니다.
호환성
버전 | 참고 |
---|---|
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 이상의 기본 설치에 포함됩니다.
방법
사이트에 대한 기본 애플리케이션 설정을 구성하는 방법
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(인터넷 정보 서비스) 관리자를 두 번 클릭합니다.
연결 창에서 서버 이름을 확장하고 사이트 노드를 확장한 다음 사이트 이름을 클릭합니다.
구성
특성
attribute | Description |
---|---|
applicationPool |
선택적 문자열 특성입니다. 부모 사이트의 모든 애플리케이션이 할당되는 기본 애플리케이션 풀을 지정합니다. |
enabledProtocols |
선택적 문자열 특성입니다. 부모 사이트의 모든 애플리케이션과 통신하는 데 사용할 프로토콜을 지정합니다. |
path |
선택적 문자열 특성입니다. 부모 사이트에 있는 모든 애플리케이션의 기본 가상 경로를 지정합니다. |
preLoadEnabled |
선택적 부울 특성입니다. IIS가 초기화되도록 애플리케이션 또는 가상 디렉터리의 기본 페이지에 대한 사용자 요청을 시뮬레이션하도록 지정합니다. 실제로 IIS는 요청을 받지 않고 애플리케이션 풀이 시작될 때 애플리케이션을 시작합니다. 이렇게 하면 관리되는 모듈 로드 및 관리 코드 컴파일과 같은 초기화 작업을 수행하여 성능이 향상됩니다. IIS 로그에 로그가 생성되지 않습니다. 애플리케이션 풀의 startMode 설정은 로 AlwaysRunning 설정해야 합니다.기본값은 False 입니다. |
serviceAutoStartEnabled |
선택적 부울 특성입니다. 이 애플리케이션에 대해 자동 시작을 사용하도록 설정하면 true이고, 그렇지 않으면 false입니다. 기본값은 false 입니다. |
serviceAutoStartProvider |
선택적 문자열 특성입니다. 가 true로 설정된 경우 serviceAutoStartEnabled WAS(Windows Process Activation Service)에서 사용할 자동 시작 공급자의 이름을 지정 합니다.기본값은 없습니다. |
자식 요소
없음
구성 샘플
다음 구성 샘플에서는 기본 웹 사이트의 기본 애플리케이션 풀을 "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