我有一个ASP.NET+一些. NET Web服务运行在IIS 6(win 2003服务器).问题是IIS正在生成大量(!)的文件在"c:\WINDOWS\Temp"目录.大量的文件意味着成千上万的文件,其中得到超过3G的大小到目前为止.
这些文件由以下命令生成:C:\WINDOWS\SysWOW64\inetsrv〉"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\csc.exe "/t:library/utf8output/R:“丙:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\vfagt\113819dd\db0d5802\assembly y\dl3\fedc6ef1\006e24d8_3bc9ca01\VfAgentWService.DLL "/R:" C:\WINDOWS\assembly\GAC_MSIL\System. Web. Services\www.example.com __b03f5f7f11d50a3a\System.Web.Services.dll "/R:"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll "/R:" C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll "/R:"C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll "/out:" C:\WINDOWS\TEMP\9i_i2bmg.dll "/debug -/optimize +/nostdlib/D:_DYNAMIC_XMLSERIALIZER_COMPILATION "C:\WINDOWS\TEMP\9i_i2bmg.0.cs"2.0.0.0__b03f5f7f11d50a3a\System.Web.Services.dll" /R:"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\mscorlib.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll" /R:"C:\WINDOWS\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll" /out:"C:\WINDOWS\TEMP\9i_i2bmg.dll" /debug- /optimize+ /nostdlib /D:_DYNAMIC_XMLSERIALIZER_COMPILATION "C:\WINDOWS\TEMP\9i_i2bmg.0.cs"
temp目录中的文件是成对的 *. out和 *. err,其中 . err文件大小为零,. out文件包含编译输出消息。
是什么原因导致IIS生成这么多文件?
我该如何预防呢?
- 更新:**
问题是我上面描述的命令(csc.exe)被执行了很多次,导致. out &. err被生成了很多次,直到它消耗了磁盘空间。
所以我的问题是:是什么导致这个命令运行这么多次?(我没有那么多. aspx和. asmx文件在我的web应用程序).
谢谢,莫伊
3条答案
按热度按时间tjvv9vkg1#
IIS + ASP.NET会动态编译.aspx、.asmx、.ascx、.ashx、.asax等文件。这些都是模板文件,最终会转换为所选语言的源代码- C#、VB .NET或任何您选择用来编写ASPX页面的语言。
当接收到对页面的请求时,ASP.NET的模型是:
.out和.err文件只是调用csc.exe时的stdout和stderr,它们不太可能占用3gb的文件系统空间。
但是,ASPNET还保留任何页或控件引用的所有程序集的临时副本如果在三个不同的ASPX页中引用System.Xml.dll,则可以使用然后有一个System.Xml.dll的副本放在ASPNET临时文件目录树中的三个不同的临时目录中。这些副本可以累积,它不会当我听到你的3GB内存大部分都是DLL拷贝时,我并不感到惊讶。
在http://www.codeproject.com/KB/aspnet/ASPXFILES.aspx上阅读更多信息
您可以删除
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
目录中的任何文件。当IIS和ASP.NET处于活动状态时,这是不可能的。如果您有维护期,您可以在站点关闭时删除它们。如果是开发机器,只需停止IIS(net stop w3svc
)删除该文件夹中的所有子目录,然后重新启动IIS(net start w3svc
)。相关:
bkhjykvo2#
在你的web.config中寻找这个:
值= 1意味着保存临时文件。2你可以预编译序列化文件以防止编译的发生。
czfnxgou3#
不知道这是否有帮助,但在这里你有一对夫妇的链接,描述了类似的情况
Link
http://social.msdn.microsoft.com/Forums/en-US/netfxremoting/thread/fddb5072-f84b-432a-945a-607e183e1da3