AppPool Recycle 之后在单个 IIS 网站下重新加载多个应用程序的简单方法?

AppPool Recycle 之后在单个 IIS 网站下重新加载多个应用程序的简单方法?

我不知道从哪里开始,甚至不知道我的想法是否正确。希望有人能告诉我该怎么做,或者至少给我一个开始旅行的方向。

我在一个包含多个 MVC3 和 Coldfusion 应用程序的 Intranet 网站上工作。我已将 AppPool 设置为每天凌晨 2:00 回收。现在,我想创建一个计划任务来重新加载该 IIS 网站下包含的每个应用程序,这样当第一个用户早上进来时,他们不必等待 30 秒到 2 分钟才能将他们的应用程序重新加载到 IIS AppPool 中。

有没有简单易行的方法?在我看来,我唯一的选择是:

  • 编写 bash 脚本,手动插入每个网站进行加载
  • 编写一个程序,尝试查找每个应用程序并加载它们

现在,如果这些是我唯一的选择,是否有一个 .NET 库可以利用,以便让我轻松找到 IIS 下的 MVC3 应用程序?

答案1

使用应用程序初始化模块来执行此操作: http://www.iis.net/download/ApplicationInitialization

此模块有一个旧版本,但这是新重写的版本。它仍处于 CTP 阶段,但看起来相当稳定。

此模块似乎默认包含在 Server 2012 和 IIS8 中

答案2

我们通常会创建一个计划任务,每隔几分钟运行一次 wget 来执行初始加载。这可以从任何计算机运行。IIS 7 有一个“预热”功能,但我真的不明白它怎么会比使用 wget 更简单。

wget.exe --quiet --secure-protocol=SSLv3 --no-check-certificate sitename.domainname.com  

还要注意,如果您的网站未预编译,用户仍会因为每个未编译的页面而产生延迟。最好的办法是使用 aspnet_compiler.exe 在构建过程中为您完成此操作。

"C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_compiler.exe" -f ^  
-v "/" -p "%~dp0..\..\SourceWebSiteFolder" ^  
-d -fixednames "%~dp0..\..\PublishedWebSiteFolder"  

相关内容