asp.net - 什么时候在asp.net Web Service中调用Application_End

标签 asp.net web-services iis global-asax

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

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

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

最佳答案

Application_End正是您正在寻找的;应用程序根据您设置的配置卸载,但默认情况下,它会在任何请求进来后继续运行一段时间处于空闲状态,或者在请求不断进来时它会保持运行。

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

要记住的关键是,您可以预期 Application_Start 之间会有一段时间。和 Application_End ,但是根据服务器上发生的情况,您无法知道还有多少时间。

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

编辑:还有一件事要添加!注意如果服务器突然宕机,Application_End不会被调用。

关于asp.net - 什么时候在asp.net Web Service中调用Application_End,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4544545/

相关文章:

wcf - TCP 错误代码 10013 netTcpBinding 服务和 Silverlight 客户端的跨域策略错误

asp.net - 从页面访问 HttpModule 的属性

web-services - REST API 404 : Bad URI, 或缺少资源?

java - 如果打包在 *.war 文件中,Switchyard 服务将无法工作

web-services - JAXWS 异步调用如何与轮询配合使用

iis - 如何使用 Cassini 进行 IIS 风格的压缩?

c# - 在 Web 应用程序中使用 Ghostscript(PDF 缩略图)

c# - 用户控件中不允许使用文字内容

c# - httpRuntime 元素的 System.web 设置

asp.net - 无法加载文件或程序集“Microsoft.Office.Interop.Excel,版本=14.0.0.0”