|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
刚刚打开这篇专题,猛然见到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网页编程欺骗了我们那么多年,如今的多核时代,我认为它气数已尽! |
|