C#.NET 无aspx文件部署
来源:互联网 发布:如何给淘宝头条投稿 编辑:程序博客网 时间:2024/06/07 23:38
要实现无aspx文件的部署,必须使用一个工具——The ASP.NET Compilation tool (Aspnet_compiler.exe)。
根据MSDN,这个工具是在.net 2.0才添加的新工具。
aspnet_compiler [-?] [-m metabasePath | -v virtualPath [-p physicalPath]] [[-u] [-f] [-d] targetDir] [-c] [-errorstack] [-fixednames] [-nologo] [-keyfile file | -keycontainer container [-aptca] [-delaysign]]
这个工具的参数就是上面的了,可以通过SDK Command Prompt来调用,这个比cmd方便点,主要是不用一个一个进目录了。
-?是看帮助,这个大家都知道
-m 是指定一个具体的本地目录
-v 是指定一个虚拟目录
-p 是指定一个物理目录
这里大概就是用这三个,其他的是用来用强命名发布等一些功能。
我编译用的命令是
aspnet_compiler -v /test -p g:/website g:/website1
我把g:/website里的web app编译到g:/website1,不知道为什么非要用-v指定一个虚拟目录就不得而知了,我的计算机上面没有一个test的虚拟目录,可是也编译成功了,哪位大哥可以解释一下,我觉得指定虚拟目录的目的可能是为了编译时用的。
编译后会包含只有一句:“This is a marker file generated by the precompilation tool, and should not be deleted!”的若干个与原来aspx同名的文件。
还会在bin目录中生成一个dll文件和的若干个与原来aspx的文件项对应的compiled,我用.Net Reflector打开发现它不是一个中间文件,后才用记事本打开,发现是一个xml格式的标记文件,里面记载了一些原始的信息,比如对应页面的文件名和后台文件名。
在这里可以看到我们以前编译的时候用-v指定的那个虚拟目录。真的很不解,对于这个问题。
发布的时候删除那些空的aspx和compiled也没有任何问题,web app一切正常。
这个功能还好,特别是在保护我们的源码方面,不过也还是有一些问题,如果程序加入了一些第三方的控件,可能会出现好多问题,我的这个就出现问题了。
编译后原来的原来的web.config还在,内容也在。
而vs 2005里的发布
build - publish 只是编译了后台的.cs .vb的文件,aspx文件里面的内容只是重新改写了一些<%@ page %>里面的一些引用。
我个人认为虽然可以用上面的工具把这些aspx文件里面的东西隐藏起来,不过细细想想aspx里面也的确没有什么值钱的东西啊,都是些控件的标识,如果把外观用css或者theme来做,那只能看到一堆<asp:XXXXX>的东西,而且如果客户端浏览看到的也只有html代码。
不过如果一些人喜欢把代码写在aspx页面内部,而不是分割代码的话,那这个工具用处就很大了。
其实用vs 2005的publish处理一下发布感觉就很好了。
这个工具好的一点就是可以只发布一个Dll和一些其他的资源文件就可以了,不用一次性部署很多很多的文件。可是一般部署都是整个目录拷贝啊!
不知道微软做了个这个东东是什么用意。
我很想知道关于这个工具的一些其他问题,希望大虾们给小虾米们点帮助。
____________________________________________________________________________________
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部署了:
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文件名
下载:
http://file.mofile.com/
提取码:6988383281481805
- C#.NET 无aspx文件部署
- aspx->cs->dll && 无aspx文件部署
- 无aspx文件部署 (转)
- (转)无aspx文件部署
- 应用Ajax.net在Asp.net中实现无aspx文件应用
- 应用Ajax.net在Asp.net中实现无aspx文件应用
- 应用Ajax.net在Asp.net中实现无aspx文件应用
- 应用Ajax.net在Asp.net中实现无aspx文件应用
- 应用Ajax.net在Asp.net中实现无aspx文件应用
- Asp.Net通过Aspx文件以Ajax无刷新方式传参的注意事项和示例!
- c#.net动态生成.aspx页面!
- 解析Aspx文件(asp.net)
- aspx 常见错误 CS0016: 未能写入输出文件“c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files/...
- IIS7之下部署FluorineFx,找不到Fluorine.aspx文件的解决方案
- ASP.NET中xxx.aspx文件,xxx.aspx.cs文件以及xxx.aspx.desinger.cs文件之间的相互关系
- aspx无扩展名
- aspx无扩展名
- asp.net 将HTML文件当ASPX文件解析
- 给男人的21句忠告
- Why size_t matters?
- 同功能不同的代码,差别呢?
- 使用设计模式改善程序结构(一)
- ASP.NET2.0中FileUpload控件的使用(即ASP.NET2.0中如何上传文件)
- C#.NET 无aspx文件部署
- 测试文章
- blog搬家了 http://jecray.cnblogs.com
- 个人技术作品 - PHP MYSQL Oper Engine
- 测试文章
- 个人技术作品 - PHP Array 常用排序及数据高级操作的 API Engine
- 开张,第一篇,还是先认识自己吧。
- 个人技术作品 - PHP 时间戳及格林威治时间互相转换及一些常用的时间比较的API
- Asp.Net--DropDownList与DataTable数据绑定的方法(C#)[学习笔记]