在Azure云服务上安排IIS重置

时间:2016-08-01 15:47:46

标签: azure azure-cloud-services

我有一个Azure云服务,当应用程序池联机时(通常为5-10分钟)需要一些热身。因此,我喜欢在非工作时间安排IIS \ App Pool回收。当我的回收发生在中午时,我让用户对我大吼大叫(我更喜欢不被大吼大叫)

我一直在做的是远程访问VM,将cmd文件添加到本地磁盘并创建运行cmd文件的计划任务:

net stop "World Wide Web Publishing Service"
net start "World Wide Web Publishing Service"

我的问题是,定期PaaS服务得到刷新"如此随机,我手动发布到云服务VM的任何代码\文件都会消失。我需要远程返回计算机并重新添加我的cmd和计划任务。

我知道云服务允许您运行启动任务等。我可以执行类似于启动任务的内容,这些任务允许我在发布应用程序时打包此cmd文件,但是在外部安排这些命令吗?如果是这样......怎么样?

2 个答案:

答案 0 :(得分:1)

启动任务可以执行您在.cspkg中包含的任何无人参与的应用/安装程序。您需要确保正确捆绑有问题的cmd文件(例如将configureSchedule.cmd添加到项目中,确保将其复制到输出目录中。)

由于您是在尝试设置日程安排,因此您可能需要在提升模式下运行cmd

<Startup>
    <Task commandLine="configureSchedule.cmd" executionContext="elevated" taskType="simple" >
        <Environment>
            <Variable name="MyVersionNumber" value="1.0.0.0" />
        </Environment>
    </Task>
</Startup>

答案 1 :(得分:0)

更好的解决方案是将AppPool设置更改为在特定时间回收。这是从David Makogan提到的启动脚本中做到的。

看看这里: Set default app pool recycling via command line

设置回收时间: https://www.iis.net/configreference/system.applicationhost/applicationpools/add/recycling/periodicrestart

enter image description here

请务必取消选中&#34;常规时间间隔&#34;否则将在当天进行回收活动。

此外,您正在停止WWW服务,更快的方法是仅回收应用程序池。这样就启动了一个新的应用程序池,而旧的应用程序池处理了用户的最后一个请求。所以(几乎)没有连接丢失

appcmd recycle apppool /apppool.name: Marketing