什么时候在asp.net WebService中调用Application_End

gil*_*lyb 5 asp.net iis web-services global-asax

什么时候Application_End在WebService的情况下才会触发?

我阅读(Application_End global.asax),每次卸载应用程序时都会调用Application_End.这是否意味着每次调用Web服务中的方法后?

我有一段代码,我需要在第一次调用IIS时再触发一次,并在最后一次调用IIS之后(以及在回收之间)再次触发,我不能在每次WebService请求和响应时触发它...

And*_*ber 10

Application_End正是你要找的; 根据您设置的配置卸载应用程序,但默认情况下,它会在任何请求进入后继续运行一段时间空闲,或者在请求不断进入时它将继续运行.

请注意,其他事情可能导致应用程序池刷新,因此导致Application_End被调用; 一定数量的重新编译(由于更改的aspx文件等),一定的时间段运行,一定的内存压力等.同样,这些都是可配置的,但通常设置为合理的默认值.

要牢记的关键是,你可以期望有是之间的某个时间Application_StartApplication_End,但你无法知道多少时间就会出现,基于什么是在服务器上发生的事情.

另请注意,当应用程序池被回收时,已经运行的请求不会突然停止,并且它们实际上可能与新进程处理的新请求重叠.这意味着End可以新的应用程序池之后调用旧的应用程序池Start.但这并不重要,因为每个应用程序都有自己的AppDomain,并且不共享数据.(但有时可以解释其他奇怪的行为.)哦,最后; 即使这也是可配置的!


编辑:还有一件事要补充!请注意,如果服务器取下来突然,Application_End不会被调用.