如何设置站点/应用程序以在Windows Azure上共享相同的应用程序池

时间:2012-12-07 18:26:20

标签: iis azure application-pool azure-web-roles

我使用Windows Azure在同一个Web角色中托管网站和Web服务。问题是,对于每个站点/应用程序,在IIS上创建了一个单独的应用程序池。 有没有办法让所有人共享一个应用程序池?

这是我的实际csdef,我在IIS中有三个不同的应用程序池({1}用于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>
...

1 个答案:

答案 0 :(得分:0)

我不知道如何指定apppool,所以你必须在IISConfigurator完成其工作并重新分配appools之后运行一些代码。 您可以使用Azure启动任务,但遗憾的是它运行得太早 - 在IISconfigurator之前。

请查看此解决方法:http://mvolo.com/configure-iis-websites-windows-azure-startup-tasks-appcmd/

他创建了一个特殊的异步任务,在IISConfigurator之后运行init命令。 init命令可能是这样的 - 它将所有应用程序池分配给新创建的:

%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程序集在特殊的webapp中重新分配。

看看这个例子:http://www.wadewegner.com/2011/01/programmatically-changing-the-apppool-identity-in-a-windows-azure-web-role/