• asp.net IE10 下的bug


    Bug描述:

    LinkButton 点击无响应

    可能与采用form登录后无法判断用户已登入的解决方法相同(需测试和验证)

    解决方法:

    1、下载微软的IE10补丁

    .NET 4 -http://support.microsoft.com/kb/2600088

    .NET 2.0

    http://support.microsoft.com/kb/2600100 for Win7 SP1/Windows Server 2008 R2 SP1, Windows Vista/Server 2008, Windows XP/Server 2003

    http://support.microsoft.com/kb/2608565 for Win7/Windows Server 2008 R2 RTM

    2、仅仅修复单个站点

         下载IE.browser文件, 地址http://www.hanselman.com/blog/content/binary/App_BrowsersUpdate.zip, 将其中的projects/ie.browser 拷贝到站点的app_browsers目录下(我仅仅修复了NET4.0的项目)


    其他参考资料:

    一、IE10浏览器访问 ASP.NET站点不正常的处理办法[图]

    有的网友反映,在使用微软的ie10这个浏览器的时候,访问用asp.net架构的站点时候,发现linkbutton失效了, 调试后发现少了_doPostBack 函数, 好端端的怎么就没有了了?

    IE10浏览器访问 ASP.NET站点不正常的处理办法[图]图片1

    搜索之后, 知道是asp.net对IE10渲染的问题的bug, .NET2.0和.NET 4.0都有这样的问题.

      文章中的解决办法:

     1.机器级别修复, 服务器所有ASP.NET程序受益

      需要去微软下载对应asp.NET版本的修补程序


    .NET 4 -http://support.microsoft.com/kb/2600088

    .NET 2.0

    http://support.microsoft.com/kb/2600100 for Win7 SP1/Windows Server 2008 R2 SP1, Windows Vista/Server 2008, Windows XP/Server 2003

    http://support.microsoft.com/kb/2608565 for Win7/Windows Server 2008 R2 RTM

      2.仅仅修复单个站点

         下载IE.browser文件, 地址http://www.hanselman.com/blog/content/binary/App_BrowsersUpdate.zip, 将其中的 ie.browser 拷贝到站点的app_browsers目录下(我仅仅修复了NET2.0的项目)

    http://www.hackhome.com/InfoView/Article_231681.html

    二、非常奇怪的问题。
    其实这个问题不解决也不影响项目的。他们不会用ie10哈哈,但是还是想知道为什么。
    当没有选择ie10的兼容性视图时,打开了处问题的那个页面,报错__doPostBack看了html源码发现没有生成__doPostBack这个函数,也根本就没有下面这段代码

    JavaScript code
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <script type="text/javascript">
    //<![CDATA[
    var theForm = document.forms['aspnetForm'];
    if (!theForm) {
        theForm = document.aspnetForm;
    }
    function __doPostBack(eventTarget, eventArgument) {
        if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
            theForm.__EVENTTARGET.value = eventTarget;
            theForm.__EVENTARGUMENT.value = eventArgument;
            theForm.submit();
        }
    }
    //]]>]
    </script>

    但是选择了兼容性视图时就会有上面的这段代码,也就是有__doPostBack这个函数了。这到底是什么情况。。。。。。难道是asp.net会认识ie10,自动判断,自已觉得是否生产那段代码,但是我在页面中使用了linkbutton服务器控件,它怎么能不生成__doPostBack这个函数呢。。。。那假如输出的页面源码中有__doPostBack这个函数,为什么又在未选择兼容性视图时,源码中却没有呢。。。。。。。

    问题已经找到了  是ie10的问题 http://www.techweb.com.cn/news/2011-09-07/1090483.shtml 微软已经发补丁更新了


    三、解決 IE10 无法使用 ASP.NET Forms登录的問題

    解決此問題,步驟如下:

    1. 先在專案目錄或正式機網站跟目錄下新增一個 App_Browsers 資料夾

    2. 新增一個副檔名為 *.browser 的檔案,例如:IE10Fix.browser,檔案內容如下:

    <browsers>
       <browser refID="Default">
         <capabilities><!-- To avoid wrong detections of e.g. IE10 -->
           <capability name="cookies" value="true" />
           <capability name="ecmascriptversion" value="3.0" />
         </capabilities>
       </browser>
     </browsers>


    View Code
    設定完成後,問題自然解決!

    本文出处:http://www.ablanxue.com/prone_7061_1.html

    四、IE10下的asp.net程序严重问题

    IE10下的asp.net程序严重问题

    0
     悬赏园豆:20 [已解决问题] 浏览: 789次

    注意:记得在win8消费者预览版的时候,ie10下也是缺少下图中所示的内容,但更新一个windows补丁后就正常了,何解?为何到了win8发布正式版后还会出现如此问题 

    【Chrome】注意:在ie9及其以下版本中,解析出来的asp.net页面与Chrome中解析出来的一致,到了ie10中却不正常了,但在ie10中打开开发者工具,切换成ie9模式又正常了,谁能告诉我这是怎么回事吗

    【Ie10】

    追赶北极光的主页追赶北极光 | 初学一级 | 园豆:99
    提问于:2012-11-14 13:48
    最佳答案
    0

    不会吧,这是.net framework  postback机制,和浏览器,开发环境没有关系呀,程序能确保没有动过?

    收获园豆:20
    田林九村 | 老鸟四级 |园豆:2037 | 2012-11-14 14:07

    同一个编译好发布且在大量用户中正在运行的程序,以前在win8消费都预览版中我就发现有这个问题,后来和同事一起玩win8消费者预览版的时候更新一下微软件发的补丁,又好了,后来一直以为win8正式发布后在ie10用会解决这个问题,昨天微软发布win7下的ie10,我想装上看一下,没想问题依然存在,后来在家打开另外一台装有win8的电脑,一样的效果,但是在ie10下,用开发者工具切换到ie9模式下是正常的,之前我的开发环境也一直是ie9+vs2010也是正常的,太奇怪了,两个图中的差别不知道你看清楚没有

    追赶北极光 | 园豆:99 (初学一级) | 2012-11-14 14:11

    @田林九村: 谢谢给出的链接,很有帮助


    五、ASP.NET在IE10中无法判断用户已登入及Session丢失问题解决方法

    今天发现在IE10中登录我公司的一个网站时,点击其它菜单,页面总会自动重新退出到登录页,后检查发现,IE10送出的HTTP头,和.AUTH Cookie都没问题,但使用表单验证机制(FormsAuthentication)却无法判断该用户已登入,保存的Session总会丢失.

    后查实这是ASP.NET 2.0,3.5和4.0的Bugs,因这些版本无法识别IE10的User-Agent标头字符串,所以无法识别用户浏览器的版本,从而导至了ASP.NET的特定功能失效,认为游览器不支持Cookies功能,不处理与Cookie相关的程式码等,从而在浏览器中不保存服务器返回的Session标识,造成丢失等.

    这个问题早经微软官方确认,是IE10的一个Bug,也发布了两个HOTFIX专门用来修复这个问题,各位如遇到同样的问题,可参考以下说明: 
    KB2600088: Hotfix 适用在 Microsoft.NET Framework 4.0 中的 ASP.NET [英文
    KB2608565: Hotfix 适用在 .NET Framework 3.5.1 中的 ASP.NET [英文
    KB2600100: Hotfix 适用在 .NET Framework 3.5 SP1 与 .NET Framework 2.0 SP2 中的 ASP.NET [英文]
    简单的解决方法是,在网站根目录,新增一个浏览器定义文件(browser definition file) 

    步骤如下
    1.添加一个"App_Browsers"文件夹 
    2.添加一个"*.browser"后缀的文件,如IE10.browser. 
    3.添加文件内容如下: 

    复制代码代码如下:

    <browsers> 
    <browser refID="Default"> 
    <capabilities><!-- To avoid wrong detections of e.g. IE10 --> 
    <capability name="cookies" value="true" /> 
    <capability name="ecmascriptversion" value="3.0" /> 
    </capabilities> 
    </browser> 
    </browsers> 

    设定完成,问题即可解决



  • 相关阅读:
    HTML页面之间跳转传值
    Ajax之三种数据传输格式
    css选择器
    jQuery Validate
    正则表达式
    JSP的九大内置对象,七大动作指令,四个作用域,三个编译指令
    Zooeeper之paxos算法
    ZooKeeper之选举(fastleaderelection算法)
    ZooKeeper之ZAB协议
    ZooKeeper之三阶段提交(3PC)
  • 原文地址:https://www.cnblogs.com/y0umer/p/3839045.html
Copyright © 2020-2023  润新知