新增應用程式集區 < 新增>
概觀
元素 <add>
的 <applicationPools>
元素會控制 IIS 7 和更新版本的應用程式集區的組態設定。 您會針對要在 IIS 伺服器上執行的每個應用程式集區,在ApplicationHost.config檔案中建立 <add>
專案。
元素 <add>
可以包含屬性和子項目,這些元素會設定管線處理模式,以及應用程式集區中背景工作進程用於傳入要求之 .NET Framework背景工作進程的版本。 這個專案也包含子項目,可設定應用程式集區身分識別、效能和健康情況,以及回收應用程式集區設定。
當您在 IIS 7 和更新版本上建立新的應用程式集區時,您至少必須指派應用程式集區唯一的名稱。 針對使用應用程式集區的應用程式,視需要設定所有其他屬性。
IIS 7.5 和更新版本中的新功能
從 IIS 7.5 開始,您可以設定應用程式使用 專案的 managedRuntimeLoader、 CLRConfigFile和 startMode 屬性 <add>
來自動啟動。 這些屬性會分別設定 Managed DLL 的名稱,以提供應用程式的執行時間載入、應用程式的 Common Language Runtime 組態檔,以及應用程式的啟動類型。
此外,IIS 7.5 和更新版本中的新功能是 元素的 <processModel>
identityType屬性的新 ApplicationPoolIdentity
類型。 這個新的身分識別類型現在是應用程式的預設進程識別,並可讓您設定內容區域的安全性,以允許特定應用程式集區的存取。 若要這樣做,您可以使用 「IIS AppPool\DefaultAppPool」 之類的語法,使用應用程式集區的名稱來設定安全性。此身分識別會動態建立,藉此大幅減少伺服器的介面攻擊區域。
相容性
版本 | 備註 |
---|---|
IIS 10.0 | 在 <add> IIS 10.0 中未修改專案。 |
IIS 8.5 | 未 <add> 在 IIS 8.5 中修改專案。 |
IIS 8.0 | 屬性的 managedRuntimeVersion 預設值已變更為 "" ,並且 v4.0 已新增為 的值 managedRuntimeVersion 。 |
IIS 7.5 | 元素 <add> 的 <applicationPools> 元素已在 IIS 7.5 中更新,以包含可讓您預先載入應用程式的屬性。 |
IIS 7.0 | <add> 集合的 <applicationPools> 元素是在 IIS 7.0 中引進的。 |
IIS 6.0 | <applicationPools> 集合會取代 IIS 6.0 IIsApplicationPools中繼基底屬性的部分。 |
安裝程式
<applicationPools>
集合包含在 IIS 7 和更新版本的預設安裝中。
作法
如何建立新的應用程式集區
(IIS) 管理員開啟 Internet Information Services:
如果您使用 Windows Server 2012 或 Windows Server 2012 R2:
- 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows 8 或 Windows 8.1:
- 按住Windows鍵,按字母X,然後按一下[主控台]。
- 按一下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
如果您使用 Windows Server 2008 或 Windows Server 2008 R2:
- 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
如果您使用 Windows Vista 或 Windows 7:
- 在工作列上,按一下 [開始],然後按一下[主控台]。
- 按兩下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
在 [ 連線 ] 窗格中,展開伺服器名稱,然後按一下 [ 應用程式集區]。
在 [ 動作] 窗格中,按一下 [ 新增應用程式集區...]。
在 [新增應用程式集區] 對話方塊中,于 [名稱:]方塊中,在[.NET Framework版本:] 下拉式清單中,選取您網站或應用程式所使用的.NET Framework版本,在[受控管線模式:] 下拉式清單中選取 [整合式] 或 [傳統],然後按一下 [確定]。
如何設定現有網站或應用程式的應用程式集區
- 在 [ 連線 ] 窗格中,展開 [ 網站],然後流覽至您要新增至應用程式集區的網站或應用程式。
- 在 [ 動作] 窗格中,按一下 [ 進階設定...
- 在 [進階設定] 對話方塊的 [一般] 區段中,按一下[應用程式集區] 專案,然後按一下省略號按鈕。
- 在 [ 選取應用程式集 區] 對話方塊中,從 [ 應用程式集區: ] 下拉式方塊中選取應用程式集區,按一下 [ 確定],然後再按一下 [ 確定 ]。
組態
集合 <add>
的 <applicationPools>
元素可在 ApplicationHost.config 檔案的伺服器層級設定。
屬性
屬性 | 描述 | ||||||||
---|---|---|---|---|---|---|---|---|---|
autoStart |
選擇性的 Boolean 屬性。 若 為 true,則表示萬維網發佈服務 (W3SVC) 應用程式集區應該在建立時或 IIS 啟動時自動啟動。 預設值是 true 。 |
||||||||
CLRConfigFile |
選擇性字串值。 指定應用程式集區的 .NET 組態檔。 注意: 這個屬性已在 IIS 7.5 中新增。 沒有任何預設值。 |
||||||||
enable32BitAppOnWin64 |
選擇性的 Boolean 屬性。 若 為 true,可讓 32 位應用程式在執行 64 位版本的 Windows 電腦上執行。 預設值是 false 。 |
||||||||
enableConfigurationOverride |
選擇性的 Boolean 屬性。 如果 為 true,表示Web.config檔案中的委派設定會針對此應用程式集區內的應用程式進行處理。 如果為 false,則會忽略此應用程式集區Web.config檔案中的所有設定。 預設值是 true 。 |
||||||||
managedPipelineMode |
選擇性列舉屬性。 指定用來處理 Managed 內容要求的要求處理模式。 managedPipelineMode屬性可以是下列其中一個可能的值。
Integrated 。 |
||||||||
managedRuntimeLoader |
選擇性字串屬性。 指定要用於預先載入應用程式集區的 Managed 載入器。 注意: 這個屬性已在 IIS 7.5 中新增。 預設值為 webengine4.dll。 |
||||||||
managedRuntimeVersion |
選擇性字串屬性。 指定要由應用程式集區使用的 CLR 版本。 managedRuntimeVersion屬性可以是下列其中一個可能的值。
"" 。 |
||||||||
name |
必要的字串屬性。 指定伺服器上應用程式集區的唯一名稱。 |
||||||||
passAnonymousToken |
選擇性的 Boolean 屬性。 如果 為 true,則 Windows Process Activation Service (WAS) 會建立並傳遞內建 IUSR 匿名使用者帳戶的權杖至匿名驗證模組。 匿名驗證模組會使用權杖來模擬內建帳戶。 當 PassAnonymousToken 為 false時,將不會傳遞權杖。 注意: IUSR 匿名使用者帳戶會取代IIS_MachineName匿名帳戶。 IIS 或其他應用程式可以使用 IUSR 帳戶。 在安裝期間,它沒有指派給它的任何許可權。 預設值是 true 。 |
||||||||
queueLength |
選擇性 uint 屬性。 表示在拒絕未來要求之前,HTTP.sys要排入應用程式集區佇列的要求數目。 預設值是 1000 。超過此屬性設定的值時,IIS 會拒絕後續的要求,並出現 503 錯誤。 如果 loadBalancerCapabilities 設定為 true,則會關閉連線,而不是拒絕具有 503 的要求。 如需 loadBalancerCapabilities的詳細資訊,請參閱 應用程式集區的失敗設定。 |
||||||||
startMode |
選擇性列舉值。 指定應用程式集區的啟動類型。 注意: 這個屬性已在 IIS 7.5 中新增。 startMode屬性可以是下列其中一個可能的值。
OnDemand 。 |
子元素
元素 | 描述 |
---|---|
cpu |
設定 CPU 親和性和 CPU 動作。 |
environmentVariables |
設定環境變數的集合,以傳遞至背景工作進程。 |
failure |
設定應用程式集區失敗時要採取的動作。 |
processModel |
設定應用程式集區的進程管理屬性。 |
recycling |
設定應用程式集區回收。 |
組態範例
下列組態範例會使用應用程式集 <add>
區元素來建立名為 Contoso 的新應用程式集區。 元素 <recycling>
會設定應用程式集區重新開機的記錄、 <periodicRestart>
專案會在應用程式集區重新開機時設定,而 <processModel>
元素會設定 shutdownTimeLimit 和 startupTimeLimit 屬性,以關閉應用程式集區中的背景工作進程,每 30 秒啟動背景工作進程。 如果超過這些時間限制,IIS 會終止背景工作進程。
<add name="Contoso">
<recycling logEventOnRecycle="Schedule">
<periodicRestart>
<schedule>
<clear />
<add value="03:00:00" />
</schedule>
</periodicRestart>
</recycling>
<processModel identityType="NetworkService" shutdownTimeLimit="00:00:30" startupTimeLimit="00:00:30" />
</add>
範例程式碼
下列程式碼範例會將名為 Contoso 的應用程式集區新增至 IIS 7 和更新版本伺服器,然後將應用程式集區設定為每天上午 3:00 回收。
AppCmd.exe
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso']" /commit:apphost
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].recycling.periodicRestart.schedule.[value='03:00:00']" /commit:apphost
您也可以使用下列語法:
appcmd.exe add apppool /name:"Contoso"
appcmd.exe set config -section:system.applicationHost/applicationPools /+"[name='Contoso'].recycling.periodicRestart.schedule.[value='03:00: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 applicationPoolsSection = config.GetSection("system.applicationHost/applicationPools");
ConfigurationElementCollection applicationPoolsCollection = applicationPoolsSection.GetCollection();
ConfigurationElement addElement = applicationPoolsCollection.CreateElement("add");
addElement["name"] = @"Contoso";
ConfigurationElement recyclingElement = addElement.GetChildElement("recycling");
ConfigurationElement periodicRestartElement = recyclingElement.GetChildElement("periodicRestart");
ConfigurationElementCollection scheduleCollection = periodicRestartElement.GetCollection("schedule");
ConfigurationElement addElement1 = scheduleCollection.CreateElement("add");
addElement1["value"] = TimeSpan.Parse("03:00:00");
scheduleCollection.Add(addElement1);
applicationPoolsCollection.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 applicationPoolsSection As ConfigurationSection = config.GetSection("system.applicationHost/applicationPools")
Dim applicationPoolsCollection As ConfigurationElementCollection = applicationPoolsSection.GetCollection
Dim addElement As ConfigurationElement = applicationPoolsCollection.CreateElement("add")
addElement("name") = "Contoso"
Dim recyclingElement As ConfigurationElement = addElement.GetChildElement("recycling")
Dim periodicRestartElement As ConfigurationElement = recyclingElement.GetChildElement("periodicRestart")
Dim scheduleCollection As ConfigurationElementCollection = periodicRestartElement.GetCollection("schedule")
Dim addElement1 As ConfigurationElement = scheduleCollection.CreateElement("add")
addElement1("value") = TimeSpan.Parse("03:00:00")
scheduleCollection.Add(addElement1)
applicationPoolsCollection.Add(addElement)
serverManager.CommitChanges()
End Sub
End Module
JavaScript
var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST");
var applicationPoolsCollection = applicationPoolsSection.Collection;
var addElement = applicationPoolsCollection.CreateNewElement("add");
addElement.Properties.Item("name").Value = "Contoso";
var recyclingElement = addElement.ChildElements.Item("recycling");
var periodicRestartElement = recyclingElement.ChildElements.Item("periodicRestart");
var scheduleCollection = periodicRestartElement.ChildElements.Item("schedule").Collection;
var addElement1 = scheduleCollection.CreateNewElement("add");
addElement1.Properties.Item("value").Value = "03:00:00";
scheduleCollection.AddElement(addElement1);
applicationPoolsCollection.AddElement(addElement);
adminManager.CommitChanges();
VBScript
Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set applicationPoolsSection = adminManager.GetAdminSection("system.applicationHost/applicationPools", "MACHINE/WEBROOT/APPHOST")
Set applicationPoolsCollection = applicationPoolsSection.Collection
Set addElement = applicationPoolsCollection.CreateNewElement("add")
addElement.Properties.Item("name").Value = "Contoso"
Set recyclingElement = addElement.ChildElements.Item("recycling")
Set periodicRestartElement = recyclingElement.ChildElements.Item("periodicRestart")
Set scheduleCollection = periodicRestartElement.ChildElements.Item("schedule").Collection
Set addElement1 = scheduleCollection.CreateNewElement("add")
addElement1.Properties.Item("value").Value = "03:00:00"
scheduleCollection.AddElement(addElement1)
applicationPoolsCollection.AddElement(addElement)
adminManager.CommitChanges()