创建使用 .NET 4.0 的应用程序池
Posted
技术标签:
【中文标题】创建使用 .NET 4.0 的应用程序池【英文标题】:Create an application pool that uses .NET 4.0 【发布时间】:2011-06-15 01:41:23 【问题描述】:我使用以下代码创建应用程序池:
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?
【问题讨论】:
【参考方案1】:我从标签中看到您正在使用 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
【讨论】:
是的。我已经切换到 ServerManager。问题是我不知道 System.Web.Administration 的 DLL 位于何处。答案是%WinDir%\System32\InetSrv\Microsoft.Web.Administration.dll
Microsoft.Web.Administration
现在也可以作为 NuGet 包添加,而不是直接引用 dll
没问题。它来自以下已删除的答案。 (而且一切都是 CC 许可的)
嗨,Kev - 我认为您尚未添加 Nuget 部分。不过,我对这个答案投了赞成票:)【参考方案2】:
newpool.Properties["ManagedRuntimeVersion"].Value = "v4.0";
将执行与 Microsoft.Web.Administration.dll 相同的操作,但使用 DirectoryEntry
还有
newPool.InvokeSet("ManagedPipelineMode", new object[] 0 );
将使用 DirectoryEntry 切换到集成或经典管道模式。
【讨论】:
【参考方案3】:其他答案在您的特定情况下更好,但一般请记住,您可以使用 appcmd 工具执行此操作:https://technet.microsoft.com/en-us/library/cc731784%28v=ws.10%29.aspx。具体来说:
appcmd add apppool /name: string /managedRuntimeVersion: string /managedPipelineMode: Integrated | Classic
【讨论】:
以上是关于创建使用 .NET 4.0 的应用程序池的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 4.0尚未在 Web 服务器上注册 解决方法