最近项目中运用了地区三级联动,用的是最普通的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. MyEclipse下XFire开发Webservice实例

    XFire Java SOAP框架概述 (摘自:http://tech.it168.com/j/e/2006-10-28/200610281432707.shtml )     MyEclipse W ...

  2. android5.1 for tq335x

    万万没有想到再次编译aosp已经是半年以后了,未完的工作总是要继续进行的. aosp不是通过repo下载的,而是在百度网盘里面找了网友的分享下载的.然后编译的方法直接挂个vpn到谷歌的官网上去看需要什 ...

  3. a标签创建超链接,利用a标签创建锚点

    #Html今日学习内容 <!DOCTYPE html> <html> <head lang="en">     <meta charset ...

  4. mysqld 已死,但是 subsys 被锁

    1. Obviously the 'ole check the log file for anything nasty cat /var/log/mysqld.log 2. Stop the serv ...

  5. LAMP自定义编译安装

    httpd 2.4.4 + mysql-5.5.28 + php-5.4.13编译安装过程: 一.编译安装apache 1.解决依赖关系 httpd-2.4.4需要较新版本的apr和apr-util, ...

  6. 初学python里的yield send next

    今天看书的时候突然看到这个想起来一直没有怎么使用过send和next试了一下 发现了一个诡异的问题 import math def get_primes(start): while 1 : if is ...

  7. go runtime.Gosched() 和 time.Sleep() 做协程切换

    网上看到个问题: package main import ( "fmt" "time" ) func say(s string) { ; i < ; i+ ...

  8. Xamarin.Forms.Platform.Perspex, Xamarin Forms 的 Perspex(号称下一代WPF) 实现

    Perspex, 跨平台的UI框架,加上Xamarin Forms的跨平台的中间层,这样同一套代码就可跨几乎所有已知平台,这其中包括旧版Windows, Linux及Mac OS. 目前,基本控件可显 ...

  9. 难道只有我一个人想吐槽npm这种包管理方式么

    实在忍不住吐槽 说实话有强迫症的我忍了很久了,实在是忍不住写篇文章来吐槽一下. 标题可能说的有点大了,我要吐槽的是:我可能只需要某一个小小的功能模块A,结果模块A依赖B-F这5个模块,然后B又依赖这1 ...

  10. Java基础之String、StringBuffer、StringBuilder

    1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串. 生活中很多数据的描述都采用的是字符串的.而且我们还会对其进行操作. 所以,java就提供了这样的一个类供我们使用. (2) ...