很久没有写博了。最近半年除了忙活布置新家和过年期间走亲访友之外,都是在公司处理一些项目中的杂事;连家里买的很多书都停下来没看了,感觉这段时间在事业和学习上一直都是忙忙碌碌,却又碌碌无为。
吐槽完,说正事:
asp.net网站在服务器端运行时,会在C:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\目录中生成编译文件,像这样的:
想了解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目录中。