网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > ASP.NET技巧
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.ASP.NET中同时支持简体和繁体中文.
.利用OpenSmtp.Net发送需要smtp验.
.asp.net 1.1中url重写的问题.
.脚本获取选中文字及所在句子.
.在DataGrid控件中获取数据项中各.
..NET 1.1 下不使用 System.Web.M.
.asp.net1.1 开发专用模板类.
.ASP.Net2.0中自定义控件在page中.
.根据自定义字符串来缓存(部分)页.
.老外的.net与mysql存储过程编程.
.在asp.net页面中使用异步读取.
.巧用VS2005解决VS2005网站发布不.
.使用.NET自带的功能制作简单的注.
.ASP.NET查询ACCESS数据库的内容并.
.用ASP.Net(C#)连接Oracle数据库的.
.在 IIS 中配置 SQL XML 支持.
.小议优化ASP.NET应用性能之Cache.
.httpRuntime 一点经验.
..NET Framework与.NET Framework.
.ASP.NET 2.0 中的母版页详解.

Asp.net1.1升级到2.0遇到的一些问题总结

发表日期:2006-9-11


周末下了点狠心,决定把项目升级到2.0平台,因为VS2003和2005可以并存,所以问题还是比较容易处理的,装上Pro版的2005,打开原来的项目,自动出现升级向导。项目里包含7个子项目,所有的逻辑和显示都是在后台项目里实现的,前台的Web项目里每个文件里都只是实现了一个对后台方法的调用,而且后台也没有用到任何高级的语法,因此升级非常平滑。
总结了一下,Web项目里的项目文件被删除了。原来两个不相干的ASPX文件也被考虑进编译过程了。编译了一下,上传到服务器上,报错。后来发现新编译的项目没有Web项目的Dll了,而服务器的目录上还留着。结果造成内部引用的混乱。删除那个老的Web项目的Dll,OK了。
然后打算试一下发布模式,用VS2005的生成菜单项目里的发布网站功能,设置发布到的目录,选项设成不允许更新,它居然把Web目录下所有的东西复制了一遍出来,所以编译过程很慢。编译完成以后在bin目录下生成了一堆东西,我以为把这些东西拷到服务器上就可以不用干净编译了。结果发现第一次访问页面的时候,还是会出现csc进程。整个网站切换过来以后,还是同样出现了一堆的csc进程,不过编译过程比原来快了一点。
另外出现的一个比较严重的问题,程序似乎过一会就会自动重启一下,导致再编译一次,而且后来发现服务器上出现了一个错误窗口,说是w3wp.exe进程出现错误,是否要进行调试。选择取消以后,w3wp.exe就自动重启了,于是又开始了新一轮的重新编译。这个过程出现了三次,吓的我赶紧切换回去1.1的版本。到事件查看器里看了一下,里面一堆的未处理异常,基本上都是值为空的错误。奇怪了,在1.1的时候没有出现过问题啊,而且代码没有进行改变。
后来查到一篇文章(中文的似乎还没有人提到过),http://www.eggheadcafe.com/articles/20060305.asp,在2.0里面对未处理的异常的处理方式跟1.1有很大的不同,1.1会忽略它,除非影响页面生成。而2.0会导致进程报错,直接影响整个网站运行。听上去是个很严重的问题,但是这样似乎更合理,否则程序员会一直忽略掉这个错误。然而因为这个问题,网站无法切换也是个很严重的问题,因此,还是需要一个平滑过度的方法。上文提到了这个方法,就是自己写一个HttpModule,处理所有的未处理异常,并且可以把异常信息记入系统事件,有利于程序员进行处理。并且上文也提供了这个HttpModule的源码和二进制文件下载,还包含Demo的WebApp。
今天终于弄懂了2.0的预部署发布的编译方式,用VS的发布网站的方式是不对的,一定要用aspnet_compiler.exe来手动编译,而且它的编译过程是针对网站的实际设置的。也就是说,必须把Web项目的内容上传到网站上去,在IIS里面设好网站的路径,然后使用aspnet_compile进行编译,可以进行本地编译,这个过程实际上它是把生成的dll放到C:\Windows\Microsoft.Net里面的缓存目录里的,也就是跟用户实际访问页面的时候csc.exe生成的是完全一致的。经过这一部,用户两次访问的时候就不会有任何编译动作发生了。
好累。顺便想到一个无缝切换的方式,分别保留两个网站,指向两个不同的目录,其中一个是没有主机头的,另一个是有主机头的,用来更新的。更新这个有主机头的网站以后,使用aspnet_compiler编译一下,然后切换两个网站的主机头,这样新访问的用户就会被导向这个新编译过的网站,而用户不会感觉到任何延迟。下次再更新另外一个站点就可以了。

http://www.cnblogs.com/unfish/archive/2006/09/10/500230.html

上一篇:编程使用资源文件实现多语言页面(In Action) 人气:5487
下一篇:Sys.ScriptLoader与JS加载进度条的实现 人气:5030
浏览全部Asp.net 2.0的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐