我有一个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文件,但是在外部安排这些命令吗?如果是这样......怎么样?
答案 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
请务必取消选中&#34;常规时间间隔&#34;否则将在当天进行回收活动。
此外,您正在停止WWW服务,更快的方法是仅回收应用程序池。这样就启动了一个新的应用程序池,而旧的应用程序池处理了用户的最后一个请求。所以(几乎)没有连接丢失
appcmd recycle apppool /apppool.name: Marketing