5

我知道在以下情况下将调用 Apllication_end:

  1. 编辑正在运行的应用程序的配置文件。
  2. 更改bin目录中的dll。
  3. 停止(或重新启动)IIS。
  4. 进程回收在 IIS6 应用程序池中打开,或者使用 aspnet 工作进程。

但我的问题是什么情况下它不会被调用?
我知道如果您手动结束 w3wp 进程或服务器将残酷关闭,它将不会被调用。

有没有其他的场景?

谢谢!

4

2 回答 2

2

你的问题的答案基本上已经在你的问题中了。只要托管您的 Web 服务的进程正常关闭,就会调用 Application_End。

唯一会发生这种情况的是:

  1. 一项操作导致 IIS 重新启动服务进程(更改文件会强制执行此操作)
  2. IIS 服务已关闭
  3. 工艺回收。

如果进程突然终止(即杀死 w3wp 进程),它将没有机会运行。

于 2012-04-24T15:22:28.380 回答
2

残酷的关闭似乎是由 OutOfMemoryException 引起的,导致创建执行请求所需的 AppDomain 失败。在这种情况下 Application_end 不会被调用。

事件类型:错误
事件源:ASP.NET 2.0.50727.0
事件类别:无
事件 ID:1334
日期: 2012 年 4 月 22 日
时间:上午 11:23:13
用户:
不适用计算机:CCBSHAIS02
描述:
无法初始化AppDomain:/LM/W3SVC/1/Root/AgentWS

异常:System.SystemException

消息:无法创建 AppDomain。

StackTrace:在 System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(字符串 appId,IApplicationHost appHost,HostingEnvironmentParameters hostingParameters)在 System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironmentAndReportErrors(字符串 appId,IApplicationHost appHost,HostingEnvironmentParameters hostingParameters)

内部异常:System.OutOfMemoryException

消息:引发了“System.OutOfMemoryException”类型的异常。

StackTrace:在 System.AppDomain.CreateDomain(字符串友好名称,证据 securityInfo,AppDomainSetup 信息)在 System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment 的 System.AppDomain.nCreateDomain(字符串友好名称,AppDomainSetup 设置,证据提供安全信息,证据创建者安全信息,IntPtr parentSecurityDescriptor) (字符串 appId、IApplicationHost appHost、HostingEnvironmentParameters 托管参数)

有关 IIS 和 AppDomain 的进一步阅读,请查看:http ://weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx

于 2012-04-29T12:27:49.017 回答