我使用以下代码创建应用程序池:
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?
答案 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