西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发C#.NET → 装上.NET Framework 4.5后 IE浏览器打开网页卡

装上.NET Framework 4.5后 IE浏览器打开网页卡

前往专题相关软件相关文章发表评论 来源:西西整理时间:2012/9/14 10:03:30字体大小:A-A+

作者:佚名点击:100次评论:2次标签: .NETFramework

.NET Framework2.0 安装版
  • 类型:编程控件大小:23.9M语言:中文 评分:4.7
  • 标签:
立即下载

一个是微软的 IE,一个是微软的 .NET Framework 4.5,竟然出现如此离奇的问题,不得不让人想起一句诗句:“本是同根生,相煎何太急”。

下面我们来一睹这个百年一遇的奇怪问题。

问题背景

最近将 job.cnblogs.com 项目中的 Entity Framework 升级到了 5.0,据说 EF 5.0 在 .NET Framework 4.5 之下性能会有大幅提升(相关博文),于是在服务器上安装了 .NET Framework 4.5。

安装后发现,.NET Framework 4.5 并没有在 C:\Windows\Microsoft.NET 中创建新的文件夹,都安装在了 .NET Framework 4.0 文件夹中,并且更新了 .NET Framework 4.0 中的很多 dll 文件,比如 System.Web.dll, System.Web.Routing.dll...

老规矩,安装后需要重启服务器,重启后测试了所有站点(IIS 7 + ASP.NET MVC 3 + WebForms),未发现任何异常。

问题现象

接着,陆陆续续有园友反映访问闪存(home.cnblogs.com/ing/)很卡,开始以为是网络线路问题。后来发现出现问题的用户用的都是 IE 8,以为是 js 代码的浏览器兼容问题引起的,于是检查  js  代码,在这个过程中无意间重现了这个问题, 而且用的是 IE 9。

用户所说的“很卡”究竟是什么样一种情况,请看下图:

“卡”也就是浏览器标签窗口上的小图标一直处于旋转状态(等待服务器响应)。

按 F12 打开 IE 的开发者工具,发现浏览器发出请求后,服务器一直没有响应。说明这个问题与 js 没有任何关系,是服务器端请求处理问题。

(这时你也许会有疑问,这个问题我们自己怎么没发现?不就是点一下 IE,几秒钟的事情。可是问题没这么简单,用 IE 第一次访问一切正常,问题出在后续的请求,通常是第三次请求。我们主要用的浏览器是 Chrome 与 Firefox,所以测试时,用 IE 打开一下,看没问题就关掉了。)

出现“卡”的问题后,即使重新打开浏览器标签也是同样的问题,唯一的解决方法是退出整个IE,并重新打开。

问题奇怪之处

问题奇怪之一:服务器是微软的 ASP.NET 环境,出问题的不是其他浏览器,而是微软自己的 IE 浏览器。(想不通)

问题奇怪之二:IE 第一次请求不会出现问题,问题只出现在后续请求中。(难道与浏览器的Last-Modified有关)

问题奇怪之三:同一台服务器,有多个站点,只有这一个站点会出现这个问题。同一个站点(home.cnblogs.com),只有主页与闪存相关页面会出现这个问题。(可能是某个操作引起的)

问题奇怪之四:WebForms 与 MVC 都会出现这个问题。这个站点是 WebForms 与 ASP.NET MVC 的混合环境,出现问题的页面是 WebForms 页面,但这些页面的 ajax 是请求由 MVC 处理的,也会有同样的问题。(这个操作可能 WebForms 与 MVC 都会用到)

问题奇怪之五: Global.asax 中取消所有 MVC 的路由注册(routes.MapRoute),问题就消失。(这个问题可能与WebForms 与 ASP.NET MVC 的混合环境有关)

问题原因确认

为了确认这个问题是不是 .NET Framework 4.5 引起的?我们在测试环境中将 .NET Framework 4.5 卸载。这时遇到另一个郁闷的问题,卸载 .NET Framework 4.5 之后,.NET Framework 4.0 也没了,更让人郁闷的是 IIS 中所有使用 .NET Framework 4.0 的应用程序池都被改为了 .NET Framework 2.0,这个卸载真“干净”。安装 .NET Framework 4.0  之后,问题立即消失;重新安装 .NET Framework 4.5,问题立即出现。不管具体是哪个操作引起的,.NET Framework 4.5 是罪魁祸首。

问题处理

昨天一天的奋战没有找出具体是哪个操作引起的,今天继续努力!

如果实在找不出,只能先卸载 .NET Framework 4.5,重新安装 .NET Framework 4.0。

问题相关代码

ASP.NET MVC 路由注册代码:

public static void RegisterRoutes(RouteCollection routes)
{
    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 文件。

    .net framework
    (10).net framework
    .是一个框架,包括公共语言运行时和.基本类库,是用.语言编写的程序运行的基本支撑。即要想在某台计算机上运行.编写的程序,必须事先要安装.。你可以这么理解。就是一个中间件。这个中间件将.高级语言转成机器语言。没有.运行环境就不能运行不了.程序西西本页提供.下载大全,,.版本怎么查看方法一第一步打开我的电脑,在地址栏输入.第二步从列出来的文件夹中,我们可以看到......而这些目录显示的最高版本号即本机.版本号,也就是.的...更多>>
    net framework
    (13)net framework
    西西软件园提供.....版本下载,是系统中一个非常重要的环境工具,如果缺少了,我们电脑中的大部分软件以及游戏都不能够运行,.版可再发行组件包将安装运行针对.版开发的应用程序时所需的.运行库及相关文件。...更多>>

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(2)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)