创建使用.NET 4.0的应用程序池

时间:2011-01-25 09:20:46

标签: c# iis-7 directoryservices application-pool

我使用以下代码创建应用程序池:

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

如何指定应用程序池应使用.NET Framework 4.0?

3 个答案:

答案 0 :(得分:42)

我从标签中看到你正在使用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

答案 1 :(得分:8)

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

将与Microsoft.Web.Administration.dll执行相同的操作,但使用DirectoryEntry

另外

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

将使用DirectoryEntry切换到集成或经典管道模式。

答案 2 :(得分:2)

其他答案在您的特定情况下更好,但通常请记住,您可以使用appcmd工具执行此操作:https://technet.microsoft.com/en-us/library/cc731784%28v=ws.10%29.aspx。具体做法是:

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