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