老尸 发表于 2015-1-18 11:18:48

ASP.NET网站制作之百年一遇的奇异成绩:当IE赶上.NET Framework 4.5仓酷云

刚刚打开这篇专题,猛然见到HAL9000发表的《对于大型公司项目平台选择j2ee的几层认识》系列,深受启发。一个是微软的IE,一个是微软的.NETFramework4.5,居然呈现云云古怪的成绩,不能不让人想起一句诗句:“本是同根生,相煎何太急”。
上面我们来一睹这个百年一遇的奇异成绩。
成绩背景
比来将job.cnblogs.com项目中的EntityFramework晋级到了5.0,听说EF5.0在.NETFramework4.5之下功能会有年夜幅提拔(相干博文),因而在服务器上安装了.NETFramework4.5。
安装后发明,.NETFramework4.5并没有在C:WindowsMicrosoft.NET中创立新的文件夹,都安装在了.NETFramework4.0文件夹中,而且更新了.NETFramework4.0中的良多dll文件,好比System.Web.dll,System.Web.Routing.dll...
老例子,安装后必要重启服务器,重启后测试了一切站点(IIS7+ASP.NETMVC3+WebForms),未发明任何非常。
成绩征象
接着,陆连续续有园友反应会见闪存(home.cnblogs.com/ing/)很卡,入手下手觉得是收集线路成绩。厥后发明呈现成绩的用户用的都是IE8,觉得是js代码的扫瞄器兼容成绩引发的,因而反省js代码,在这个过程当中偶然间重现了这个成绩,并且用的是IE9。
用户所说的“很卡”事实是甚么样一种情形,请看下图:

“卡”也就是扫瞄器标签窗口上的小图标一向处于扭转形态(守候服务器呼应)。
按F12翻开IE的开辟者工具,发明扫瞄器收回哀求后,服务器一向没有呼应。申明这个成绩与js没有任何干系,是服务器端哀求处置成绩。
(这时候你大概会有疑问,这个成绩我们本人怎样没发明?不就是点一下IE,几秒钟的事变。但是成绩没这么复杂,用IE第一次会见统统一般,成绩出在后续的哀求,一般是第三次哀求。我们次要用的扫瞄器是Chrome与Firefox,以是测试时,用IE翻开一下,看没成绩就关失落了。)
呈现“卡”的成绩后,即便从头翻开扫瞄器标签也是一样的成绩,独一的办理办法是加入全部IE,偏重新翻开。
成绩奇异的地方
成绩奇异之一:服务器是微软的ASP.NET情况,出成绩的不是其他扫瞄器,而是微软本人的IE扫瞄器。(想欠亨)
成绩奇异之二:IE第一次哀求不会呈现成绩,成绩只呈现在后续哀求中。(岂非与扫瞄器的Last-Modified有关)
成绩奇异之三:统一台服务器,有多个站点,只要这一个站点会呈现这个成绩。统一个站点(home.cnblogs.com),只要主页与闪存相干页面会呈现这个成绩。(多是某个操纵引发的)
成绩奇异之四:WebForms与MVC城市呈现这个成绩。这个站点是WebForms与ASP.NETMVC的夹杂情况,呈现成绩的页面是WebForms页面,但这些页面的ajax是哀求由MVC处置的,也会有一样的成绩。(这个操纵大概WebForms与MVC城市用到)
成绩奇异之五:在Global.asax中作废一切MVC的路由注册(routes.MapRoute),成绩就消散。(这个成绩大概与WebForms与ASP.NETMVC的夹杂情况有关)
成绩缘故原由确认
为了确认这个成绩是否是.NETFramework4.5引发的?我们在测试情况中将.NETFramework4.5卸载。这时候碰到另外一个忧郁的成绩,卸载.NETFramework4.5以后,.NETFramework4.0也没了,更让人忧郁的是IIS中一切利用.NETFramework4.0的使用程序池都被改成了.NETFramework2.0,这个卸载真“洁净”。安装.NETFramework4.0以后,成绩当即消散;从头安装.NETFramework4.5,成绩当即呈现。不论详细是哪一个操纵引发的,.NETFramework4.5是祸首罪魁。
成绩处置
今天一天的奋战没有找出详细是哪一个操纵引发的,明天持续勉力!
假如其实找不出,只能先卸载.NETFramework4.5,从头安装.NETFramework4.0。
成绩相干代码
ASP.NETMVC路由注册代码:
publicstaticvoidRegisterRoutes(RouteCollectionroutes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapPageRoute("Default","","~/Default.aspx");routes.MapRoute("DefaultMvcAjax","ajax/{controller}/{action}/{id}",new{controller="",action="",id=""});routes.MapRoute("IngMovileMvc","ing/mobile/{action}/{ingListType}/{pageIndex}",new{controller="IngMobile",action="Home",ingListType=CNBlogs.UcHome.Entities.IngListType.all,pageIndex=1});routes.MapRoute("DefaultMvc","{controller}/{action}/{id}",new{controller="Msg",action="List",id=""});}呈现成绩的会见路径:根路径与ing/default.aspx,这两个路径会见的都是实践的.aspx文件。
成绩增补
用IE9开辟者工具检察哀求信息,Requestheaders,Requestbody,Responseheaders,Responsebody全为空,只要Timings中有内容,见下图:

net网页编程欺骗了我们那么多年,如今的多核时代,我认为它气数已尽!

精灵巫婆 发表于 2015-1-20 19:59:07

ASP.NET可以无缝地与WYSIWYGHTML编辑器和其他编程工具(包括MicrosoftVisualStudio.NET)一起工作。这不仅使得Web开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到Web页的GUI和完全集成的调试支持。微软为ASP.net设计了这样一些策略:易于写出结构清晰的代码、代码易于重用和共享、可用编译类语言编写等等,目的是让程序员更容易开发出Web应用,满足计算向Web转移的战略需要。

admin 发表于 2015-1-29 19:35:52

ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。

分手快乐 发表于 2015-1-30 23:45:56

PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。

若相依 发表于 2015-2-6 17:04:43

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的

金色的骷髅 发表于 2015-2-7 08:29:40

asp.net最主要特性包括:◆编程代码更简洁◆网站可实现的功能更强大◆运行效率高◆节省服务器的动作资源

第二个灵魂 发表于 2015-2-7 23:46:39

我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。

仓酷云 发表于 2015-2-8 03:26:28

虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。

兰色精灵 发表于 2015-2-24 03:25:27

Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。

莫相离 发表于 2015-2-25 00:21:59

如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。

再现理想 发表于 2015-3-11 16:04:16

逐步缩小出错代码段的范围,最终确定错误代码的位置。

柔情似水 发表于 2015-3-19 00:34:31

是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。

海妖 发表于 2015-3-26 20:02:28

主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
页: [1]
查看完整版本: ASP.NET网站制作之百年一遇的奇异成绩:当IE赶上.NET Framework 4.5仓酷云