gpt4 book ai didi

asp.net - IIS 6+ASP.NET - 生成了许多临时文件

转载 作者:行者123 更新时间:2023-12-04 06:56:20 24 4
gpt4 key购买 nike

我有一个 ASP.NET + 一些在 IIS 6 上运行的 .NET web 服务(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:"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\vfagt\113819dd\db0d5802\assembly\dl3\fedc6ef1\006e24d8_3bc9ca01\VfAgentWService.DLL"/R:"C:\WINDOWS\assembly\GAC.0MSIL0s. __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\9mg.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 文件)。

谢谢,

最佳答案

你无法阻止它。 IIS + ASP.NET 动态编译文件,如 .aspx、.asmx、.ascx、.ashx、.asax 等。这些都是模板文件,最终会转换为所选语言的源代码 - C#、VB.NET 或您选择编写 ASPX 页面的任何语言。

当收到页面请求时,ASP.NET 的模型是这样的:

  • 检查所请求页面的程序集是否可用且是最新的。如果是,则将请求传递给页面。
  • 如果没有,请从所涉及的模板(aspx、ascx 等)生成源代码。将生成的源代码放入 ASP.NET Temp 目录。
  • 将源文件编译成动态命名并放置在临时目录中的程序集。如果您使用 C#,这意味着它运行 csc.exe,如您所见。
  • 加载新编译的程序集。
  • 将请求传递给该程序集(例如,步骤 1)

  • .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 )。

    有关的:
    - Eliminating temporary ASP.Net Files
    - What is the “Temporary ASP.NET Files” folder for?

    关于asp.net - IIS 6+ASP.NET - 生成了许多临时文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2516536/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com