在本地跑的好好的一个程序放到Azure上就经常出现访问超时的问题,研究了半天,发现是因为程序放到Azure后, IIS 的Idle Timeout 默认只有20分钟, 如果这段时间没有请求, IIS会进入Idle状态,20分钟后,当有新的请求时,IIS需要一段时间进入激活状态,所有第一个请求会出现超时的现象。
这个问题在一般的场景下只需手动到IIS的设置里把Idle Timeout从默认的20分钟改成更长的时间或直接改成0.
但是到Azure上,每次上传package,IIS都会重新设成20分钟,这时需要用到Azure的startup配置来完成这个设置:
创建一个startup.cmd文件,内容如下:
%windir%\system32\inetsrv\appcmdset config-section:applicationPools