我想在启动时在我的应用程序中启动System.Threading.Timer
(也许部署是正确的单词)。我已经看到您可以使用Application_Start()
,但这只是fired once the first request comes to the application。我需要在应用程序运行后立即启动计时器,以便即使用户没有与站点交互也可以检查要处理的工作。如何在应用程序启动并运行后让应用程序启动计时器?
答案 0 :(得分:8)
您可以为AlwaysRunning
使用新的ASP.Net 4模式。这样它就不会等待第一个请求启动
<applicationPools>
<add name="MyAppWorkerProcess" managedRuntimeVersion="v4.0"
startMode="AlwaysRunning" />
</applicationPools>
答案 1 :(得分:4)
当应用程序启动并运行时,应用程序启动实际上会触发。您遇到的问题是IIS在收到第一个请求之前实际上并未启动应用程序。
另一个需要了解的重要事项:IIS可能会因为不活动而关闭您的应用。如果您有一些需要一直运行的东西,那么您可能会寻找与ASP.NET应用程序不同的工具。也许是Windows服务,甚至是计划任务。
答案 2 :(得分:0)
这是正常行为 - 应用程序需要由请求页面的人“触发”。
在IIS 7.5及更高版本(例如win 2008 / win7)中,有一项功能可以自动执行此操作 - 有关详细信息,请参阅此链接:http://visualstudiomagazine.com/articles/2010/02/18/preloading-aspnet-applications.aspx
在我公司制作的其他ASP.NET Web服务器(www.neokernel.com上的在线服务器)中,这是通过指定将使用服务器配置文件预加载的某些页面来完成的。从本质上讲,页面将被传递到ASP.NET处理管道,并在任何人请求与该页面关联的URL之前进行编译/旋转。
答案 3 :(得分:0)
一种方法是使用JavaScript setInterval方法启动计时器。这需要在每个页面上进行,因此您将把它放在母版页中。