安排Azure云服务上的IIS重置

安排Azure云服务上的IIS重置,azure,azure-cloud-services,Azure,Azure Cloud Services,我有一个Azure云服务,当应用程序池上线时(通常为5-10分钟),它需要一些预热。因此,我喜欢在非工作时间安排IIS\App池回收。当我的回收工作在中午进行时,我会让用户对我大喊大叫(我宁愿不被大喊大叫) 我一直在做的是远程处理到VM中,将cmd文件添加到本地磁盘,并创建一个运行cmd文件的计划任务: net stop "World Wide Web Publishing Service" net start "World Wide Web Publishing Service" 我的问题是

我有一个Azure云服务,当应用程序池上线时(通常为5-10分钟),它需要一些预热。因此,我喜欢在非工作时间安排IIS\App池回收。当我的回收工作在中午进行时,我会让用户对我大喊大叫(我宁愿不被大喊大叫)

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

net stop "World Wide Web Publishing Service"
net start "World Wide Web Publishing Service"
我的问题是,PaaS服务会定期“刷新”,因此,我手动发布到云服务VM的任何代码\文件都会随机消失。我需要远程返回到机器中,并重新添加我的cmd和计划任务


我知道云服务允许您运行启动任务等。我可以做一些类似于启动任务的事情,允许我在发布应用程序时打包这个cmd文件,但在外部调度这些命令吗?如果是的话。。如何执行?

启动任务可以执行
.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>

更好的解决方案是将AppPool设置更改为在特定时间循环使用。从David Makogan提到的启动脚本中执行此操作

请看这里:

设置回收时间:

请务必取消选中“常规时间间隔”,否则将在一天中发生回收事件

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

appcmd recycle apppool /apppool.name: Marketing 

谢谢@DavidMakogon!我会在旗杆上试一试,但非常感谢@ErikOppedijk提供的信息。我的问题是,虚拟机周期性地被“重置”,而我所做的自定义更改(如手动将文件添加到云服务虚拟机上的驱动器)消失。所以,目前,我需要远程回到机器和手动重新工具,这是我试图避免。另外,感谢关于appcmd的提示,但是我的应用程序池名称总是随机生成的,不幸的是这会导致该解决方案出现问题。上面的脚本必须放在启动脚本中,就像David提到的那样。优点是这是本机IIS功能。