Как изменить свойство Enable32BitAppOnWin64 пула приложений на IIS 7 в Windows Azure? - PullRequest
3 голосов
/ 31 августа 2011

У меня есть проект с библиотекой третьей части, эта библиотека сделана для 32-битных систем. Но мой проект будет работать в Windows Azure, и я должен установить для свойства Enable32BitAppOnWin64 пула приложений значение true, прежде чем Windows Azure запустит мое приложение. Как можно установить это свойство (конфигурировать, программно)? Если я могу сделать это только программно, то где в коде я должен это изменить? Могу ли я сделать это в событии OnStart of WebRole?

Ответы [ 2 ]

12 голосов
/ 31 августа 2011

Я просто должен был сделать это.Я использовал задачу запуска, чтобы изменить этот параметр.

Я создал пакетный файл и добавил команду:

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.enable32BitAppOnWin64:true

Затем я добавил пакетный файл для запуска в качестве сценария запуска в Azureконфигурации.Работает без проблем.

Подробнее о задачах запуска смотрите здесь: http://msdn.microsoft.com/en-us/library/gg456327.aspx

0 голосов
/ 23 февраля 2015

После добавления вышеупомянутой команды в командный файл запуска, который вызывает сценарий powershell, сценарий как-то завершается с ошибкой в ​​этой записи, и моя облачная служба не может запуститься. В итоге я изменил файл WebRole.cs, и он работал в облачной службе Azure (Windows Server 2012 R2), например так:

using Microsoft.Web.Administration;
namespace KDC.UserWeb.RoleEntryPoint
{
    {
        public override bool OnStart()
        {
            Enable32BitAppPool();
            return base.OnStart();
        }
        {
            base.Run();
        }

    public static void Enable32BitAppPool();
    {
        ServerManager serverManager = new ServerManager();
        ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools;
        foreach (ApplicationPool applicationPool in applicationPoolCollection)
        {
            if( !String.IsNullOrEmpty(applicationPool.Name) && applicationPool.Name[0]  != '.' )
            {
                serverManager.ApplicationPools[applicationPool.Name].Enable32BitAppOnWin64 = true;
                serverManager.CommitChanges();
            }
        }
    }

}

}

Примечание:
По умолчанию создаются два appPool, запускаемые с .NET ... который будет отфильтрован и выбран только appPool, созданный специально для облачного сервиса, для включения 32 бит.

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