Создайте пул приложений, который использует.NET 4.0

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

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 ответа

Решение

Я вижу по тегам, которые вы используете 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

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

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

Также

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

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

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

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

Другие вопросы по тегам