【发布时间】:2013-11-25 07:33:54
【问题描述】:
直到几个小时前,我还以为我很了解 ASP.NET。我知道 IIS 可以由于多种原因回收应用程序域,包括更改 web.config/bin/App_GlobalResources 等文件/目录,或者按计划或特定事件(如达到特定内存阈值)。
我非常确定我的代码没有达到任何这些条件。基本上,一个常规的 http 请求会在后台线程 (ThreadPool.QueueUserWorkItem) 中触发一个小任务,这会导致在我的 ASP.NET 应用程序的子目录中写入一个 pdf 文件。
这个子目录没有任何可以导致应用程序回收的资格。是这样的:
我的网站\公司名称\Mailer\UploadFiles
请不要提出诸如配置或 bin 目录更改之类的原因,代码在 ASP.NET 文件夹中没有任何变化。它写入非 ASP.NET 目录中的 pdf 文件。
我使用 Application_End 事件找出回收的原因(使用此处建议的反射:http://weblogs.asp.net/scottgu/archive/2005/12/14/433194.aspx)并得到了这个:
_shutDownMessage=Directory rename change notification for 'd:\Projects\MyProject\trunk\dev'.
dev dir change or directory rename
HostingEnvironment initiated shutdown
HostingEnvironment caused shutdown
Directory rename change notification for 'd:\Projects\MyProject\trunk\dev'.
dev dir change or directory rename
我几乎被难住了。我很确定我已经在其他项目上编写了代码,这些代码写在应用程序的子目录下而不会导致应用程序回收。但在这种情况下不是。
我错过了什么吗? IIS 是否会回收尝试从 ASP.NET 应用程序本身写入应用程序的任何子目录的应用程序域?
【问题讨论】: