web-dev-qa-db-ja.com

.NET4.0を使用するアプリケーションプールを作成します

次のコードを使用してアプリプールを作成します。

var metabasePath = string.Format(@"IIS://{0}/W3SVC/AppPools", serverName);
DirectoryEntry newpool;
DirectoryEntry apppools = new DirectoryEntry(metabasePath);
newpool = apppools.Children.Add(appPoolName, "IIsApplicationPool");
newpool.CommitChanges();

アプリプールで.NETFramework 4.0を使用するように指定するにはどうすればよいですか?

24
jgauffin

IIS7を使用しているタグからわかります。どうしても必要な場合を除いて、IIS6互換コンポーネントは使用しないでください。推奨されるアプローチは、 Microsoft.Web.Administration マネージAPIを使用することです。

これを使用してアプリケーションプールを作成し、.NET Frameworkのバージョンを4.0に設定するには、次のようにします。

using Microsoft.Web.Administration;
...

using(ServerManager serverManager = new ServerManager())
{
  ApplicationPool newPool = serverManager.ApplicationPools.Add("MyNewPool");
  newPool.ManagedRuntimeVersion = "v4.0";
  serverManager.CommitChanges();
}

Microsoft.Web.Administration.dllへの参照を追加する必要があります。これは次の場所にあります。

%SYSTEMROOT%\System32\InetSrv

44
Kev
newpool.Properties["ManagedRuntimeVersion"].Value = "v4.0";

Microsoft.Web.Administration.dllと同じことを行いますが、DirectoryEntryを使用します

また

newPool.InvokeSet("ManagedPipelineMode", new object[] { 0 });

DirectoryEntryを使用して、統合パイプラインモードまたは従来のパイプラインモードに切り替えます。

8
Matt

特定のシナリオでは他の回答の方が適していますが、一般に、appcmdツールを使用してこれを行うことができることに注意してください。 https://technet.Microsoft.com/en-us/library/cc731784%28v = ws.10%29.aspx 。具体的には:

appcmd add apppool /name: string /managedRuntimeVersion: string /managedPipelineMode: Integrated | Classic

2
bmm6o