Подтвердить что ты не робот

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

4b9b3361

Ответ 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

Ответ 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