很久没有写博了。最近半年除了忙活布置新家和过年期间走亲访友之外,都是在公司处理一些项目中的杂事;连家里买的很多书都停下来没看了,感觉这段时间在事业和学习上一直都是忙忙碌碌,却又碌碌无为。


吐槽完,说正事:


asp.net网站在服务器端运行时,会在C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\目录中生成编译文件,像这样的:

Temporary asp.net files.png

想了解Temporary ASP.NET Files目录生成原理的可出门右转上百度查询,此篇博文要说的是:当Temporary ASP.NET Files目录生成文件太多,导致C盘爆满时,我们可以如何处理?


方法一:把Temporary ASP.NET Files中生成的文件转移到其它磁盘,使它不挤爆C盘

在web.config的compilcation节点中设置属性tempDirectory,文件的生成目录,如:

默认情况是这样:

<compilcation debug="true">

改为:

<compilcation debug="true" tempDirectory="D:\MyTemporaryAspNetFiles\"><!--此处的盘符目录可以自己设定-->

修改之后,即可释放C盘,不过文件仍然会持续生成在其它磁盘。


方法二:修改预编译的方式(修改compilcation节点中batch属性的值)

在web.config的compilcation节点中设置batch属性,此属性若不设置,默认为true。

batch="true"时,将文件批量编译在一个dll中,好处就是可提高编译速度。

batch="false"时,因为会将每个需要编译的文件编译为单独的dll,存放在Temporary ASP.NET Files目录中,第一次编译比较慢。

/******** 以下为我们公司项目特有情况,仅供参考 ********/

在我们的在以往的某些项目中,我们把所有*.html都托管给了.net Framework的aspnet_isapi.dll,并且*.html页面根据网站后台系统录入数据而不断重新生成,所以每次生成新的html文件之后,整个网站都会被重新编译,导致Temporary ASP.NET Files目录中的编译文件不断大幅增长。

而我们改为batch="false"之后,每个文件会独立编译,当生成新的html文件时,也不会整站全部编译,只会单独编译这一个html文件对应的dll文件存放在Temporary ASP.NET Files目录中。