最近项目中运用了地区三级联动,用的是最普通的DropDownList回发来实现的,如下图
一直用着都挺好的,可最近客户最近新换了台服务器,我把网站迁移过去就有了问题,三级联动失效了。
首先申明一点,这个三级联动虽然是用服务器控件做的,但代码是没有错的,我一点可以确认,不是网上经常看到的那些服务器控件属性设置不对或方法使用不正确。
 
网站运行环境
新服务器:Windows Server2008 64位系统,IIS7,应用程序.net Framework 版本4.0、托管管道为集成模式、32位兼容模式。
原服务器:Windows Server2008 32位系统,IIS7,应用程序.net Framework 版本4.0、托管管道为集成模式。
本地开发:Windows 7 32位系统,IIS express 8,VS2012
 
测试环境:我自己机器上 IE10,Firefox21,Chome27,同事机器上IE6、7、8、9外加360,遨游、QQ之类的浏览器。
 
测试结果:只有在新服务器和IE10组合时开会出现错误(就是DropDownList控件的OnSelectedIndexChanged事件失效、现象就是下拉框更改选择后页面不回发了)。
附:对新服务器中网站的抓包如下
注意:在IE10中,各种浏览器模式和文档模式都一一试过,结果都是一样。
从源码可以看出,服务器返回给IE10的Html代码中没有onchange事件。
 
看到这里,不知道各位会认为错误出现在什么地方?
我的第一反应是错误出在服务器方,应该不是浏览器的问题,因为我们都知道,浏览器只是执行Html代码,而Html代码都是由服务器端动态返回的,很明显服务器返回给IE10的Html代码中丢失了onchange事件。再对比网站的服务器环境我把重心放到了64位系统上,因为新、旧服务器也就这点不同,结果掉坑里去了,把网站重新设置为64位环境编译了一遍,编译过程还挺曲折的,引用组件System.Data.SQLite.dll没法在64位下运行,费了老大劲,花了大把时间给搞定,结果错误依旧。
 
到这里我又不得不怀疑是浏览器问题了,但是同事都没有用IE10的,到目前为止也就我机器上测试到这个错误。想起老板新买的笔记本是Win8的所以就把链接发给他,让他看看IE11下是不是有问题。结果老板一看我发的消息裁图,北京市都跑四川了,以为数据库出错了,直接叫经理来解决问题。
经理过来一不看代码,二不看服务器,直接认定我浏览器设置有问题,一番设置后,居然“好了”,其实就是把当前网站加入到IE的兼容性列表里(具体做法就是在IE菜单栏工具中将当前网站添加兼容性视图)。
 
我一直以为F12中浏览器模式设置为“IE10兼容性视图”和IE菜单栏工具中的添加兼容性视图是一样的,没想到还有有些区别。
读了后面这段,就会明白其实这个差别只是时间差,在工具栏中添加的兼容性视图在请求时就是以兼容性视图请求的。而F12中的兼容性视图接收到的Html代码是以IE正常模式讲求的,只以兼容性视图解析而已。
 
我们开发时遇到问题一般有两种解决方式,一种像我们经理这样,还有一种就是从根本上解决。我一般不赞成这种表面解决问题的方式,所以我就继续找解决方案,既然问题出现在IE中,我试着用IE10之类的关键字搜索,最后用“asp.net IE10”Google时了一篇英文文章大概是这个意思,接着搜索才找到两篇中文的。原文链接我也找不到了,大概意思就是,asp.net4.0出生得比IE10早,所以asp.net4.0以前版本不认识IE10 的 User-Agent 标头,导致的后果就是ASP.NET 特定功能失效,例如:页面报错__doPostBack找不到,不支援 Cookies 功能等等。这属于.net的Bug,微软也发布了补丁。我没找到文章中的补丁(不知道是后续补丁覆盖了还是不同系统补丁编号不同),但我更新新服务器中的所有补丁后,错误没有了。
 

记录asp.net在IE10下事件丢失排错经过的更多相关文章

  1. asp.net在IE10下事件丢失排错经过

    下午看一篇文章,感觉对以后自己开发有点用途,摘抄下来. 原文出处:http://www.cnblogs.com/weapon/archive/2013/06/23/3150584.html 最近项目中 ...

  2. Asp.net在IE10、IE11下事件丢失经验总结

    asp.net4.0出生得比IE10早,所以asp.net4.0以前版本不认识IE10 的 User-Agent 标头,导致的后果就是ASP.NET 特定功能失效,例如:页面报错__doPostBac ...

  3. 解决ASP.NET在IE10中Session丢失问题【转】

    今天发现在IE10中登录我公司的一个网站时,点击其它菜单,页面总会自动重新退出到登录页,后检查发现,IE10送出的HTTP头,和.AUTH Cookie都没问题,但使用表单验证机制(FormsAuth ...

  4. Asp.net默认配置下,Session莫名丢失的原因及解决

    Asp.net默认配置下,Session莫名丢失的原因及解决 我们平时写的asp.net程序,里面要用到Session来保存一些跨页面的数据.但是Session会经常无故丢失,上网查查,也没找到原因. ...

  5. Asp.net服务器控件在IE10下的不兼容问题

    Asp.net服务器控件在IE10下的不兼容问题 时间:2013-05-16 09:07点击: 89 次 [大 中 小] 相信很多使用IE10的童鞋们已经发现了这个问题,以下是本人在IE10标准模式下 ...

  6. ASP.NET 状态服务 及 session丢失问题解决方案总结

    ASP.NET2.0系统时,在程序中做删除或创建文件操作时,出现session丢失问题.采用了如下方法:1.asp.net Session的实现:asp.net的Session是基于HttpModul ...

  7. [转]ASP.NET 状态服务 及 session丢失问题解决方案总结

    转自[http://blog.csdn.net/high_mount/archive/2007/05/09/1601854.aspx] 最近在开发一ASP.NET2.0系统时,在程序中做删除或创建文件 ...

  8. asp.net学习之GridView事件、GridViewRow对象

    原文:asp.net学习之GridView事件.GridViewRow对象 1. GridView控件的事件 GridView有很多事件,事件可以定制控件的外观或者行为.事件分为三类     1.1 ...

  9. ASP.NET状态服务及session丢失问题解决方案总结

    原文:ASP.NET状态服务及session丢失问题解决方案总结[转载] asp.net Session的实现: asp.net的Session是基于HttpModule技术做的,HttpModule ...

随机推荐

  1. 编译器错误信息: CS0433: 类型“ASP.usercontrols_total_ascx”同时存在

    “/”应用程序中的服务器错误. 编译错误 说明: 在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误信息: CS0433: 类型“ASP.use ...

  2. php tools for visual studio 2013 完美 破解 Cracker

    PHP Tools for Visual Studio 2013,这个是 目前在 Visual Studio 2010/2012/2013 中 下最好用的php插件了,  破解 好的 Cracker  ...

  3. windows下安装python和依赖包的利器——Anaconda

    在windows下安装python和很多依赖包,安装起来略为痛苦,可以使用python的大整合包——Anaconda Anaconda下载地址: http://continuum.io/downloa ...

  4. iOS 直播类APP开发流程分解:

    1 . 音视频处理的一般流程: 数据采集→数据编码→数据传输(流媒体服务器) →解码数据→播放显示1.数据采集:摄像机及拾音器收集视频及音频数据,此时得到的为原始数据涉及技术或协议:摄像机:CCD.C ...

  5. Linux下PHP安装oci8扩展

    PHP通常搭配Mysql使用,但有时候也会连接到Oracle数据库.安装PHP的oci8扩张之前,需要先安装Oracle Instant Client( basic 或 basic lite 版就行了 ...

  6. fulltext不支持Mysql中文全文索引

    Mysql对某表某字段建立了fulltext索引,也不支持中文. 当数据量很大的时候,比较成熟的做法是使用专门的全文索引系统,用这些专业的全文索引系统来分词,以mysql数据库中的数据作为数据源,来分 ...

  7. c语言编译器(linux平台下安装c语言环境)一

    gcc : 语言的默认编译器     (ubuntu下输入gcc,可根据终端输出查看是否安装了gcc) g++ : c++的默认编译器   (ubuntu下输入g++,可根据终端输出查看是否安装了g+ ...

  8. Swift 对比学习 (一)

    Swift相对Objective-C来说,有过之而无不及,并与Objective-C无缝混编,可谓利器.在Swift中可以看到不同的编程语言的影子,天下语言一大抄,这样也好,减低了不同语言的学习成本. ...

  9. Wix 安装部署教程(十五) --CustomAction的七种用法

    在WIX中,CustomAction用来在安装过程中执行自定义行为.比如注册.修改文件.触发其他可执行文件等.这一节主要是介绍一下CustomAction的7种用法. 在此之前要了解InstallEx ...

  10. Redis和Memcached的区别详解

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/119.html?1455855360 Redis的作者Salvatore ...