在asp.net WebService中未调用Application_End时

时间:2012-04-24 15:01:43

标签: c# asp.net .net iis application-end

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

  1. 编辑正在运行的应用程序的配置文件。
  2. 更改bin目录中的dll。
  3. 停止(或重新启动)IIS。
  4. 在IIS6应用程序池中启用了进程回收,或者使用aspnet工作进程。
  5. 但我的问题是什么时候它不会被调用? 我知道如果你手动结束w3wp进程或服务器将被严重关闭,它将不会被调用。

    还有其他场景吗?

    谢谢!

2 个答案:

答案 0 :(得分:2)

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

唯一一次会发生这种情况:

  1. 操作导致IIS重新启动服务进程(更改文件会强制执行此操作)
  2. IIS服务已关闭
  3. 流程回收。
  4. 如果进程突然终止(即杀死w3wp进程),它将无法运行。

答案 1 :(得分:2)

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

  

事件类型:错误
  事件来源:ASP.NET 2.0.50727.0
  活动类别:无
  事件ID:1334
  日期:2012年4月22日
  时间:上午11:23:13
  用户:N / A
  电脑:CCBSHAIS02
  说明:
  无法初始化AppDomain:/ LM / W3SVC / 1 / Root / AgentWS

     

异常:System.SystemException

     

消息:无法创建AppDomain。

     

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

     

InnerException:System.OutOfMemoryException

     

消息:抛出了类型'System.OutOfMemoryException'的异常。

     

StackTrace:在System.AppDomain.nCreateDomain(String friendlyName,   AppDomainSetup设置,Evidence providedSecurityInfo,Evidence   creatorsSecurityInfo,IntPtr parentSecurityDescriptor)at   System.AppDomain.CreateDomain(String friendlyName,Evidence   securityInfo,AppDomainSetup info)at   System.Web.Hosting.ApplicationManager.CreateAppDomainWithHostingEnvironment(字符串   appId,IApplicationHost appHost,HostingEnvironmentParameters   hostingParameters)

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