2013-04-18 56 views
12

好吧,所以我基本上正在使用新的IIS 8.0应用程序初始化模块实施天蓝色的热身。Azure Appcmd启动任务,为所有站点设置preloadEnabled

我有一个启动任务(cmd文件),基本上已经取消了IIS中的空闲超时和回收时间。我试图添加应用程序初始化。

我意识到我需要设置两件事情; startModepreloadEnabled

我的应用程序在IIS中有大量网站(大约10个),所有这些网站都由Azure随机命名,并使用它们自己的随机命名的应用程序池。

startMode是容易的,因为这可以通过执行被设置为一个应用程序池默认:

%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.startMode:AlwaysRunning 

,它适用于所有的应用程序池。

但是preloadEnabled并不容易。

要设置preloadEnabled,你可以使用这个名为网站:

%windir%\system32\inetsrv\appcmd set config -section:sites [name='MySite'].applicationDefaults.preloadEnabled 

但我需要它适用于所有网站,我不知道的名字(他们是随机的) ,一种默认的(我如何设置startMode)。

任何想法?

+0

你试过一个: 'Appcmd.exe的设置配置-section:system.applicationHost /网站/applicationDefaults.preloadEnabled:"True” /承诺:apphost' – astaykov

+0

@astaykov preloadEnabled是不是一种选择网站默认值,它只能设置每个网站(我试过了,它说这样的设置不存在 – mattytommo

+0

在您的体系结构中,您是否动态添加网站,或者当您构建Cloud Service包和部署时,没有更改(即没有新的站点被添加或删除)? – astaykov

回答

10

经过一天的搜索,我终于明白了。它基本上在appcmd中使用一个循环,通过使用管道将命令链接在一起(有点像for循环)。那就是:

%systemroot%\system32\inetsrv\AppCmd.exe list app /xml | %windir%\system32\inetsrv\appcmd set site /in -applicationDefaults.preloadEnabled:True 
+0

当我使用它时,我得到:Publish-AzureServiceProject:BadRequest:在更新或 升级操作期间,您的角色实例已经回收了多次。新版本您的服务或您在配置服务时配置设置 会阻止角色实例运行。验证您的代码不会抛出未处理的异常 并且您的配置设置是正确的,然后开始另一个更新或升级操作。 –

0

对于那些仍然在IIS 7.5:

+0

你可以帮助我展示如何通过命令行来做到这一点吗? –

0

对于IIS 8.5,设置的preload在应用(不在网站级别)使用appcmd,应该使用以下命令。

appcmd set app "Default Web Site/ApplicationName" /preloadenabled:true 
相关问题