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