asp.net项目在部署后,aspx文件并没有被编译,这种情形要一直维持到用户第一次访问页面,该页面文件aspx才会转化成cs,并编译成dll,这次访问速度不会很快,但从此以后,所有访问者将得到理想的访问速度。
那么如何在部署后就让所有的aspx处于已经编译成dll的状态呢?通过上面的描述我们不难想到,只要把所有页面都访问一遍即可,这个访问有一个简单方法,就是递归项目所在的文件夹,把物理路径转化成web访问的http地址,并使用httpRequest访问一遍即可(如果有权限控制,可能要作更多的工作)。
访问后,在/WINNT/Microsoft.NET/Framework/版本号/Temporary ASP.NET Files/项目名称/随机数/随机数
这个目录下会生成对应的文件,其中*.cs是通过aspx生成的类文件(该文件经过处理后,就可以实现无aspx文件的部署),*.dll是通过aspx生成的dll文件,*.res是aspx文件中除去runat=server剩余的不需要编译的部分。
无aspx文件部署
在aspx->cs->dll这篇post中我向大家介绍了通过aspx生成cs并编译成dll的方法,浪漫十一狼对这个技巧的一个应用(无aspx部署)向我提问,我在这里向大家详细介绍一下。
通过上篇post大家已经知道了如何获取aspx生成的dll文件,我们只要再作两步工作,就可以实现无aspx部署了:
1、把生成的全部dll文件拷贝到项目的bin目录下;
2、在web.config中加入类似下面的配置节声明
<httpHandlers>
<add verb="*" path="WebForm1.aspx" type="ASP.WebForm1_aspx, srqmg4mo" />
</httpHandlers>
其中,
srqmg4mo是生成的dll的程序集名称,我们得到的dll文件名和程序集名称相同;
ASP.WebForm1_aspx是命名空间,统一为ASP.aspxFileName_aspx格式;
WebForm1.aspx是我们要处理的aspx文件名
做完这两步之后,就可以把所有的aspx都删掉了
# re: 无aspx文件部署
还请不吝赐教!
我要作的是这样的工作:我要写一套 ASP.NET 自定义控件,客户端控件的行为都在 .JS 文件里。
这样应用我的控件后的文件,要作以下包含:
<script language="jscript.encode" src="lib/config.js"></script>
<script language="jscript.encode" src="lib/basic.js"></script>
<script language="jscript.encode" src="lib/control.js"></script>
但控件使用者在使用我的控件时,我不希望要在他的工程里加入这些文件,在 J2EE 中,这可以通过将控件部分 生成到一个 WAR 目录实现,请问在 .NET 例如何办?
2004-09-27 11:20 | dh
# re: 无aspx文件部署
to dh:
1、
script language="jscript.encode" src="lib/config.js改成
script language="jscript.encode" src="lib/config.aspx"
2、
在lib下加入config.aspx,并在load事件中Response.Write出config.js的所有内容