PreApplicationStartMethod何时实际被触发运行?

时间:2011-05-10 20:11:20

标签: c# asp.net asp.net-mvc-3 .net-4.0

使用WebActivator PreApplicationStart方法时,实际触发绑定到此方法的方法是什么?当IIS7启动App Pool时?当第一个请求发送到网络服务器?别的什么?如果您有答案,还可以提供您获取此信息的位置的参考吗?

IIS 7.5中是否有任何变化?

2 个答案:

答案 0 :(得分:25)

WebActivator PreApplicationStart实际上依赖于ASP.NET PreApplicationStartMethodAttribute(请参阅this链接以了解网络激活器的工作原理)。

ASP.NET runtime starts up应用程序和代码在app_start事件被触发之前在管道中提前运行时,

PreApplicationStartMethodAttribute才有效。因此,为了回答您的问题,当第一次向Web服务器发出请求时将触发该触发器(这将在应用程序启动时启动)。

请注意,触发器与ASP.NET应用程序启动有关,而与应用程序池无关。您的应用程序池可能正在运行,因为某些其他应用程序(可能是非ASP.NET应用程序)但是当第一个请求来自ASP.NET应用程序时,此触发器将发生(对于特定应用程序),因为应用程序已启动。

如果您使用的是auto-start功能,则IIS会在您的应用池循环中重新启动您的应用,因此PreApplicationStart将被触发。

答案 1 :(得分:8)

@ VinayC答案的一个小补充:如果您在PreApplicationStartMehod中添加断点并调试Web应用程序,您可能会看到每次请求都会调用它。通过写入PreApplicationStartMethod中的日志文件,我很容易确认这不是通常的行为。如果未附加到调试器,则此方法不会在每个请求上运行。