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

jga*_*fin 24 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();
Run Code Online (Sandbox Code Playgroud)

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

Kev*_*Kev 43

我从标签上看到你正在使用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();
}
Run Code Online (Sandbox Code Playgroud)

您应该添加一个Microsoft.Web.Administration.dll可以在以下位置找到的引用:

%SYSTEMROOT%\System32\InetSrv

  • 是.我已切换到ServerManager.问题是我不知道System.Web.Administration的DLL所在的位置.答案是`%WinDir%\ System32\InetSrv\Microsoft.Web.Administration.dll` (4认同)
  • `Microsoft.Web.Administration`现在也可以作为NuGet包添加,而不是直接引用dll (2认同)

小智 8

newpool.Properties["ManagedRuntimeVersion"].Value = "v4.0";
Run Code Online (Sandbox Code Playgroud)

将与Microsoft.Web.Administration.dll做同样的事情,但使用DirectoryEntry

newPool.InvokeSet("ManagedPipelineMode", new object[] { 0 });
Run Code Online (Sandbox Code Playgroud)

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