我一直在寻找这方面的信息无济于事.我需要这个的背景是我在这里问的另一个问题.更具体地说,在App_Data中创建/更新/删除文件会导致池回收吗?
如果有人能提供导致回收的详细清单,那就太好了.
更新:由于两个用户已经注意到我也很乐意回答指定仅回收AppDomain而不是整个池的原因.
你喜欢的另一篇文章实际上做得很好.
立即回收
Web.config更改
Machine.config更改
Global.asax发生了变化
Bin目录更改
App_Code更改
延迟回收
可能会在其他位置发生多处更改,通常情况下,我只注意到.aspx或.cs/.vb文件的更改.添加临时文本,csv或其他文件并没有给我带来问题.
注意:这些都是应用程序域回收,而不是池的实际回收.通常,应用程序POOL将仅基于IIS中的设置(请求数,内存限制,空闲时间或计划重新启动)进行回收.
两种不同的效果 - AppPool进程是潜在多个appdomains的主机.通常,这可以通过许多效果来回收,例如时间 - 每隔'n'小时,缺少请求,内存使用等.在IIS配置管理器中配置.
AppDomain - 应用程序根目录的托管实例,可以更频繁地循环,而不会影响AppPool中的其他AppDomain.Tess在AppDomain回收上的帖子非常有见地
http://blogs.msdn.com/tess/archive/2006/08/02/asp-net-case-study-lost-session-variables-and-appdomain-recycles.aspx
您正在写入监视重新编译的文件夹 - 这将在某个时刻触发appdomain重新创建.
事件日志将帮助您确定启动回收的原因.
您可能想要打开完整的AppPool回收事件日志:
cscript adsutil.vbs Set w3svc/AppPools/DefaultAppPool/LogEventOnRecycle 255
您还可以查看这篇Scott Guthrie博客文章:http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx,它展示了如何在Global.ASAX中编写代码来记录Application.End事件的实际原因.
这对于我们诊断几个棘手的问题非常有用 - 一个特别是一个将日志文件写入wwwroot目录的应用程序 - 太多文件更改导致回收...