2011-01-25 2 views
23

Я использую следующий код для создания пула приложений:Создать пул приложений, который использует .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?

ответ

41

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

+4

Да. Я переключился на ServerManager. Проблема заключалась в том, что я не знал, где находится DLL для System.Web.Administration. Ответ: '% WinDir% \ System32 \ InetSrv \ Microsoft.Web.Administration.dll' – jgauffin

+2

' Microsoft.Web.Administration' также можно добавить как пакет NuGet, а не напрямую ссылаться на dll – jgauffin

+0

@jgauffin - oh cool, не возражаете, если я добавлю это к моему ответу? – Kev

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

Сделаю САМ е вещь как Microsoft.Web.Administration.dll но с использованием DirectoryEntry

Также

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

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

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

+0

Хотя эта ссылка может ответить на вопрос, лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. –

+0

@AndrewArnold хорошая точка, сделано. – bmm6o

 Смежные вопросы

  • Нет связанных вопросов^_^