"Temporary ASP.NET Files"文件夹是用来做什么的?

165

我发现了这个文件夹:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files,有一些问题想问。

  • ASP.NET用这个文件夹做什么?存储什么类型的文件?
  • 文件如何被存储在这里?什么时候会更新?
  • 这个文件夹需要进行维护吗?

11
如果有人正在寻找该目录,它似乎已经移到了“C:\Users[用户名]\AppData\Local\Temp\Temporary ASP.NET Files”位置。 - Peter
3个回答

183

这些是所谓的”影子复制文件夹“。

简单地说... 我真的是这个意思:

当ASP.NET第一次运行您的应用程序时,它会复制在/bin文件夹中找到的任何程序集,复制任何源代码文件(例如在App_Code文件夹中找到的文件),并解析您的aspx、ascx文件到c#源文件。然后,ASP.NET将所有代码构建/编译为可运行的应用程序。

这样做的一个优点是防止.NET程序集DLL #(在/bin文件夹中)被ASP.NET工作进程锁定而无法更新。

ASP.NET监视你的网站的文件变化,如果需要,就会重新开始整个过程。

理论上讲,该文件夹不需要维护,但偶尔可能需要删除其中的内容,且仅在极少数情况下需要。话虽如此,我为一个托管公司工作,在每个共享服务器上运行多达1200个网站,多年来我没有必要在大约250台机器上操作这个文件夹。

这在MSDN文章了解ASP.NET动态编译中有详细介绍。


嗨Kev,我有一个com dll,它被复制到这个文件夹中,dll需要一些配置文件在其当前文件夹中才能执行。我该如何确保它们也被复制到这个文件夹中? - Rakesh
2
@机器人 - 你可能已经找到了答案,但为了未来的读者着想,你可以使用反射找到DLL的“原始”位置,然后通过这种方式访问配置文件。请参见https://dev59.com/BnRA5IYBdhLWcg3www3D#837501 - JDB
3
由于持续集成,这个文件夹似乎在不断积累 - 每次网站部署(一天多次),文件夹中就会创建一个新的副本 - 到目前为止已经有29GB了。 - Andy Joiner
7
作为一个网站托管服务,也许您从未接触过这个文件夹,但对于开发人员来说,这绝对是我们需要处理的最大的困扰。我已经花费了许多整天的时间来解决本应该很简单的问题,但是IIS阴影复制和Visual Studio Web Site样式项目的组合使得工作变成了噩梦,我不得不每天多次清空这个文件夹的内容。 - bikeman868

10

CLR在运行时编译时使用它。这里有一个链接到MSDN的详细解释。


4
那就是ASP.NET动态编译的程序集所在之处。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接