Создайте пул приложений, который использует .NET 4.0 - PullRequest
24 голосов
/ 25 января 2011

Я использую следующий код для создания пула приложений:

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 ]

42 голосов
/ 25 января 2011

Я вижу по тегам, которые вы используете IIS7.Если вам абсолютно не нужно, не используйте компоненты совместимости IIS6.Предпочтительным подходом должно быть использование управляемого API Microsoft.Web.Administration.

Чтобы создать пул приложений с помощью этого и установить версию .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

8 голосов
/ 31 марта 2011
newpool.Properties["ManagedRuntimeVersion"].Value = "v4.0";

Будет делать то же самое, что и Microsoft.Web.Administration.dll, но используя DirectoryEntry

Также

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

Переключится в интегрированный или классический режим конвейера, используя DirectoryEntry.

2 голосов
/ 25 июля 2012

Другие ответы лучше в вашем конкретном сценарии, но в целом имейте в виду, что вы можете использовать для этого инструмент appcmd: https://technet.microsoft.com/en-us/library/cc731784%28v=ws.10%29.aspx. В частности:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...