简述 asp.net 动态编译与禁止

2012 年 9 月 21 日1,2950

  当创建一个ASP.NET 页面的时候,其实就是创建一个.NET 的类的源代码,创建System.Web.UI.Page 类的一个实例(instance)。Asp.net 页面的所有内容包括脚本(Script) 和HTML 内容都会编译进 .NET 类中。

  请求一个ASP.NET 页面时会自动检测这个页面对应的类,如果不存在则编译成一个新的类,并且把编译后的类(程序集)保存在:

  WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 的临时文件夹中

  在页面下次访问时就不在再进行编译了,先前编译类会执行并把结果返回给浏览器。

  这样就服务器断电多时再启动服务器都再访问时都不会再需要编译,那么我们可以禁止动态编译吗?答案当然是可以,但是有先决条件:

  禁止动态编译(禁止页面后页面不会向内存加入程序集,可以节约内存):

  CompilationMode 具备三个属性:Always,Auto,Naver

  只要在 @Page 中加入 CompilationMode="Never" 就可以禁止此页面编译了。

  如果需要整个网站禁止编译需要在 Web.Config 中的 Pages 属性设置CompilationMode 就可以禁止整个文件夹或者真个应用程序动态编译。

  注意事项:对于包含服务器代码和服务器控件的页面是不能禁止编译的。

0 0