2009-09-18 81 views
1

我有在午夜00:00重新启动IIS的Windows任务。在我的应用程序中,有一个后台线程在02:00左右运行全局刷新。如何在运行IISRESET后立即重新启动ASP.NET应用程序?

我的问题是,应用程序只启动来自浏览器的第一个请求。这可能不会发生相当长的一段时间,全球更新可能迟于开始。

有没有办法在没有先浏览到Web应用程序的情况下启动应用程序?

回答

3

在IIS重新启动后,您可以有另一个访问您的网站的任务。

不过,我看不出为什么你会有一个线程在你的IIS工作进程中进行维护。如果进程因某种原因死亡(例如 - 由于网站应用程序池中的回收配置),工作将无法完成。最好从单独的进程中完成,比如windows服务或计划的Windows任务。

1

您不应该在IIS Web应用程序中安排任何线程 - 因为IIS有一些逻辑可以在不使用时回收工作进程和应用程序。它更好地运行它作为一个单独的应用程序(单独计划)。

4

理想情况下,您应该将维护任务与您的Web应用程序(作为计划任务或Windows服务)分开保存。

但是,如果你真的需要做这种方式可以创建一个批处理文件,做:

iisreset /restart 
"C:\Program Files\GnuWin32\bin\wget.exe" -O nul http://www.myapp.com/default.aspx 

然后在12:00运行该批处理文件作为计划的任务。这将重新启动IIS并预热您的应用程序。

你可以从GNU wget.exe

WGET for Windows (SourceForge)

+0

只是需要注意一些少见的情况:在Web站点配置为使用IIS Web花园时不起作用。 (嗯,它会,但它只会预热一个工作进程,即为服务请求而启动的那个进程。) –

+0

这是事实,但是OP只需要创建/初始化他的后台线程并准备好执行比他的整个应用程序热身。如果它在网络花园上运行,我们也会进入一个完全不同的世界。并发问题。 – Kev

0

你也可以通过使用任务管理器称为PowerShell脚本。我们使用简单的六行script来“预热”SharePoint服务器。

您可以为基本的.NET应用程序重新调整用途或查找类似的脚本。

相关问题