IIS Recycle Global.asax

后端 未结 4 1671
误落风尘
误落风尘 2020-12-06 12:45

Is it possible to catch an recycle event in the global.asax?

I know Application_End will be triggered but is there a way to know that it was triggered by a recycle o

4条回答
  •  佛祖请我去吃肉
    2020-12-06 13:29

    So, here is an idea how this could work.

    Based on my previous answer (attach to AppDomain.CurrentDomain.ProcessExit) and stephbu's comment:

    This will trap most structured process teardowns e.g. - but I'm not sure that it will trap all tear downs. e.g. http://blogs.msdn.com/jmstall/archive/2006/11/26/process-exit-event.aspx Process recycle will kill the process if it seems to be hung - your handler wouldn't get called.

    I suggest following strategy:

    In the (regular) ProcessExit handler (which we suppose will not be called on a application pool recycling), write some file to disk like "app_domain_end_ok.tmp".

    Then in the Application_Start of your global.asax check for this file. If it doesn't exist it is a sign that the application was not terminated in a clean way (or that it is the first time ever it started). Don't forget to delete this file from disk after the check.

    I didn't try that myself, but it could be worth a try.

提交回复
热议问题