Как настроить сайты/приложения для совместного использования одного и того же пула приложений в Windows Azure

Я размещаю веб-сайт и веб-службу в одной веб-роли, используя Windows Azure. Проблема в том, что для каждого сайта/приложения создается отдельный пул приложений на IIS. Есть ли способ заставить их всех использовать один пул приложений?

Вот мой фактический csdef, для которого у меня есть три разных пула приложений в IIS (1x для Virtual Application, 1x для сайта AppWS и 1x для сайта Web)

<WebRole name="Orchard.Azure.Web" vmsize="ExtraSmall">
<Sites>
  <Site name="Web">
    <VirtualApplication name="VAppWS" physicalDirectory="..\..\..\AppWS" />
    <Bindings>
      <Binding name="Binding80" endpointName="Endpoint80" />
      <Binding name="Binding443" endpointName="Endpoint443" />
    </Bindings>
  </Site>
  <Site name="AppWS" physicalDirectory="..\..\..\AppWS">
    <Bindings>
      <Binding name="Binding444" endpointName="Endpoint444" />
    </Bindings>
  </Site>
</Sites>
<Endpoints>
  <InputEndpoint name="Endpoint80" protocol="http" port="80" />
  <InputEndpoint name="Endpoint443" protocol="https" port="443" certificate="ssl.root" />
  <InputEndpoint name="Endpoint444" protocol="https" port="444" certificate="ssl.ws" />
</Endpoints>
...

person Community    schedule 07.12.2012    source источник
comment
Есть ли какая-то конкретная причина, по которой вы хотите поделиться пулом приложений?   -  person viperguynaz    schedule 08.12.2012
comment
Да, каждый пул приложений выделяет память. Я проверил это, и в моем случае это около 100 МБ на пул приложений. Мои ресурсы очень ограничены, и это кажется пустой тратой времени. (На самом деле они размещают одно и то же приложение.)   -  person    schedule 08.12.2012


Ответы (1)


Я не знаю, как указать пул приложений, поэтому вам нужно запустить некоторый код после того, как IISConfigurator выполнит свою работу и переназначит пулы приложений. Вы могли бы использовать задачу запуска Azure, но, к сожалению, она запускается слишком рано — до IISconfigurator.

Взгляните на этот обходной путь: http://mvolo.com/configure-iis-websites-windows-azure-startup-tasks-appcmd/

Он создает специальную асинхронную задачу, которая запускает команды инициализации после IISConfigurator. Команды инициализации могут быть примерно такими — они назначают все пулы приложений только что созданному:

%windir%\system32\inetsrv\appcmd add apppool /name:MyApplicationPool /managedRuntimeVersion:v4.0
%windir%\system32\inetsrv\appcmd list app /xml | %windir%\system32\inetsrv\appcmd set app /in /applicationPool:MyApplicationPool

Другой подход может заключаться в переназначении в специальном веб-приложении с использованием сборки Microsoft.Web.Administration.

Взгляните на это в качестве примера: http://www.wadewegner.com/2011/01/programmatically-change-the-apppool-identity-in-a-windows-azure-web-role/

person stargater    schedule 20.12.2012