这让我疯了……
我已经确定了以下内容,但我不知道为什么会发生这种情况或如何阻止它。
处理 Web 服务的 IIS 工作进程每隔一两分钟就会在我的 WINDOWS/Temp 目录中创建相同 DLL、PDB 和空 .tmp 文件的多个副本。我知道这是 Web 服务的工作进程在执行此操作,因为当我尝试删除文件时,它不允许我删除,而 ProcExp 表示 IIS 工作进程有该文件,然后深入研究该工作进程,我可以知道它是运行我的 Web 服务的进程。它正在创建这样的文件...
tmp2A95.tmp.pdb
tmp2A95.tmp
tmp2A95.tmp.dll
总是以这三个文件为一组,但按十六进制顺序编号,每组跳过三个……因此下一组文件将是 tmp2A98
这些文件以大约……嗯……周末 12,000 个的速度被创建。它们占满了我的硬盘,并开始给网站带来问题。
这是供应商软件,他们不知道为什么会发生这种情况,我尽了最大努力去追查,但我无法访问他们的源代码。他们一直让我做一些与问题无关的荒谬事情,我们大约 6 个月都没能解决这个问题。
事件日志中没有错误,IIS 日志中没有任何内容,并且 DLL 是其 API 库之一的副本。奇怪的是 PDB...整个服务器上没有其他 PDB 文件 - 这些是直接从 DLL 本身生成的?
如果您以前见过这种情况,或者知道是什么原因导致 IIS 在临时文件夹中删除三个这样的文件,请告诉我。
谢谢!
答案1
pdb 文件是程序数据库文件。它用于调试。例如,如果您的 Web 应用程序发生异常,如果发生异常的程序集 (dll) 有一个 pdb 文件,它将记录有问题的代码的源代码行号和方法名称。
检查虚拟目录层次结构中的所有 web.config 文件,查找“。如果启用了调试,ASP.NET 站点上的每个页面都会生成大量临时文件。
另一种可能性:如果任何事物虚拟站点层次结构中的更改,这将导致 ASP.NET 应用程序重新编译,从而导致您看到的文件。确保您没有任何更改网站层次结构中的文件夹或文件的内容。如果有,您需要将修改的文件夹/文件移出网站层次结构。另一个常见的罪魁祸首是防病毒扫描程序,它可以更改文件的某些日期属性。可能需要禁用 NTFS 上次访问更新。
ASP.NET 中臭名昭著的 Debug=True 属性
http://aspalliance.com/articleViewer.aspx?aId=1341&pId=-1
不要在启用 debug=”true” 的情况下运行生产 ASP.NET 应用程序
http://weblogs.asp.net/scottgu/archive/2006/04/11/442448.aspx