共用方式為


新增應用程式集區 < 新增>

概觀

元素 <add><applicationPools> 元素會控制 IIS 7 和更新版本的應用程式集區的組態設定。 您會針對要在 IIS 伺服器上執行的每個應用程式集區,在ApplicationHost.config檔案中建立 <add> 專案。

元素 <add> 可以包含屬性和子項目,這些元素會設定管線處理模式,以及應用程式集區中背景工作進程用於傳入要求之 .NET Framework背景工作進程的版本。 這個專案也包含子項目,可設定應用程式集區身分識別、效能和健康情況,以及回收應用程式集區設定。

當您在 IIS 7 和更新版本上建立新的應用程式集區時,您至少必須指派應用程式集區唯一的名稱。 針對使用應用程式集區的應用程式,視需要設定所有其他屬性。

IIS 7.5 和更新版本中的新功能

從 IIS 7.5 開始,您可以設定應用程式使用 專案的 managedRuntimeLoaderCLRConfigFilestartMode 屬性 <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 和更新版本的預設安裝中。

作法

如何建立新的應用程式集區

  1. (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) 管理員]。
  2. 在 [ 連線 ] 窗格中,展開伺服器名稱,然後按一下 [ 應用程式集區]。

  3. 在 [ 動作] 窗格中,按一下 [ 新增應用程式集區...]。

  4. 在 [新增應用程式集區] 對話方塊中,于 [名稱:]方塊中,在[.NET Framework版本:] 下拉式清單中,選取您網站或應用程式所使用的.NET Framework版本,在[受控管線模式:] 下拉式清單中選取 [整合式] 或 [傳統],然後按一下 [確定]。
    [新增應用程式集區] 對話方塊的螢幕擷取畫面,其中包含 [名稱]、[點 NET Framework 版本] 和 [受控管線模式] 欄位。

如何設定現有網站或應用程式的應用程式集區

  1. 在 [ 連線 ] 窗格中,展開 [ 網站],然後流覽至您要新增至應用程式集區的網站或應用程式。
  2. 在 [ 動作] 窗格中,按一下 [ 進階設定...
  3. 在 [進階設定] 對話方塊的 [一般] 區段中,按一下[應用程式集區] 專案,然後按一下省略號按鈕。
    顯示 [進階設定] 對話方塊的螢幕擷取畫面,其中已醒目提示 [應用程式集區]。
  4. 在 [ 選取應用程式集 區] 對話方塊中,從 [ 應用程式集區: ] 下拉式方塊中選取應用程式集區,按一下 [ 確定],然後再按一下 [ 確定 ]。
    [選取應用程式集區] 對話方塊的螢幕擷取畫面,其中顯示從應用程式集區下拉式方塊選取的 Contoso。

組態

集合 <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屬性可以是下列其中一個可能的值。
描述
Classic 指定應用程式集區使用個別的 IIS 和 ASP.NET 要求處理管線,其適用于 ASP.NET 1.1 應用程式,以及 ASP.NET 2.0 或更新版本的應用程式無法在整合模式中運作。

數值為 1
Integrated 指定應用程式集區使用整合式 IIS 和 ASP.NET 要求處理管線,此管線僅適用于 ASP.NET 2.0 或更新版本的應用程式。

數值為 0
預設值為 Integrated
managedRuntimeLoader 選擇性字串屬性。

指定要用於預先載入應用程式集區的 Managed 載入器。

注意: 這個屬性已在 IIS 7.5 中新增。

預設值為 webengine4.dll
managedRuntimeVersion 選擇性字串屬性。

指定要由應用程式集區使用的 CLR 版本。

managedRuntimeVersion屬性可以是下列其中一個可能的值。
描述
v1.1 指定應用程式集區使用 CLR 1.1 版。
v2.0 指定應用程式集區使用 CLR 2.0 版,它可以.NET Framework 2.0 版、3.0 版或 3.5 版。
v4.0 指定應用程式集區使用 CLR 4.0 版,它可以.NET Framework 4.0 版或 4.5 版。
預設值是 ""
name 必要的字串屬性。

指定伺服器上應用程式集區的唯一名稱。
passAnonymousToken 選擇性的 Boolean 屬性。

如果 為 true,則 Windows Process Activation Service (WAS) 會建立並傳遞內建 IUSR 匿名使用者帳戶的權杖至匿名驗證模組。 匿名驗證模組會使用權杖來模擬內建帳戶。 當 PassAnonymousTokenfalse時,將不會傳遞權杖。

注意: IUSR 匿名使用者帳戶會取代IIS_MachineName匿名帳戶。 IIS 或其他應用程式可以使用 IUSR 帳戶。 在安裝期間,它沒有指派給它的任何許可權。

預設值是 true
queueLength 選擇性 uint 屬性。

表示在拒絕未來要求之前,HTTP.sys要排入應用程式集區佇列的要求數目。 預設值是 1000

超過此屬性設定的值時,IIS 會拒絕後續的要求,並出現 503 錯誤。 如果 loadBalancerCapabilities 設定為 true,則會關閉連線,而不是拒絕具有 503 的要求。 如需 loadBalancerCapabilities的詳細資訊,請參閱 應用程式集區的失敗設定
startMode 選擇性列舉值。

指定應用程式集區的啟動類型。

注意: 這個屬性已在 IIS 7.5 中新增。

startMode屬性可以是下列其中一個可能的值。
描述
AlwaysRunning 指定 Windows Process Activation Service (WAS) 一律會啟動應用程式集區。 此行為可讓應用程式在處理任何 HTTP 要求之前載入作業環境,以減少應用程式初始 HTTP 要求的啟動處理。

數值為 1
OnDemand 指定當對裝載于應用程式集區的應用程式提出 HTTP 要求時,Windows Process Activation Service (WAS) 將會啟動應用程式集區。 此行為類似于舊版 IIS 中的 WAS 行為。

數值為 0
預設值是 OnDemand

子元素

元素 描述
cpu 設定 CPU 親和性和 CPU 動作。
environmentVariables 設定環境變數的集合,以傳遞至背景工作進程。
failure 設定應用程式集區失敗時要採取的動作。
processModel 設定應用程式集區的進程管理屬性。
recycling 設定應用程式集區回收。

組態範例

下列組態範例會使用應用程式集 <add> 區元素來建立名為 Contoso 的新應用程式集區。 元素 <recycling> 會設定應用程式集區重新開機的記錄、 <periodicRestart> 專案會在應用程式集區重新開機時設定,而 <processModel> 元素會設定 shutdownTimeLimitstartupTimeLimit 屬性,以關閉應用程式集區中的背景工作進程,每 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()