如何解决ASP.NET网站'__doPostBack' is undefined的脚本错误
最近碰到一个很奇怪的问题!
新发布一个ASP.NET的网站,基于.net 4.0 framework,基本没有用到什么特别新的技术,但是由于给客户预览用的服务器比较老,操作系统用的是Windows 2003,上面默认只支持IIS 6。将网站发布上去之后大部分功能都能正常运行,但是有一些操作会莫名其妙地报'__doPostBack' is undefined的脚本错误。在网上查找了一下错误产生的原因,这个是.net 4.0 framework中的一个bug,可以查看这篇文章http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx
部分ASP.NET的控件在postback的时候会失效,并且抛出'__doPostBack' is undefined的脚本错误,如DropDownList的SelectedIndexChanged事件触发,RadioButtonList或CheckBoxList在postback的时候,还有LinkButton等控件。该问题只会出现在比较高版本的IE浏览器中(由于我本机只有IE11,所以不确定是否较低版本的IE上也会出现该问题),FireFox和Chrome上一切运行正常。另外,在IE中将User agent string改为IE10或以下也运行正常。

尝试了以下方法均无效:
1. 重新安装.net 4.0 framework。
2. 在IIS中重新配置网站运行权限和.net设置项。
3. 清除本机所有已安装的.net framework版本然后重新安装.net 4.0 framework。
4. 排除网站代码本身产生的问题。因为除了IE,其它的浏览器均运行正常,说明代码本身没有问题,应该是服务器环境所产生的。
解决办法:
- 尝试通过App_BrowsersUpdate来修补本网站的影响。在Visual Studio中可通过Nuget搜索并下载App_BrowsersUpdate,它会在网站根目录创建App_BrowsersUpdate文件夹,并下载两个browser文件。该方法只对本网站有效,并不能解决服务器上其它网站遇到的问题。如果该方法并不奏效,可尝试打开本机的browsers文件并对其进行必要的修改,地址C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers。

- 通过安装hotfix来解决该问题(推荐)。安装hotfix会影响服务器上所有已发布的网站。注意,如果安装hotfix出错或者无法安装,可尝试重新安装对应版本的.net framework,然后再尝试安装hotfix。有的时候服务器上安装的.net framework版本可能不是最新的或者没有完全安装相应的补丁(通常服务器上的Windows更新被强制关闭了导致补丁无法自动完成安装)所以尝试重新安装.net framework然后再安装hotfix一般会奏效。
如果上述方法均不奏效,可以考虑升级IIS 6到IIS 7或IIS 8.5,或者升级.net framework到4.5或更新版本,或者为网站的所有页面加上下面的脚本:
if ($('#__EVENTTARGET').length <= 0 && $('#__EVENTARGUMENT').length <= 0) {
$('#YOUR_ASPNET_FORMID').prepend('<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /><input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />');
}
if (typeof __doPostBack == 'undefined') {
__doPostBack = function (eventTarget, eventArgument) { object
var theForm = document.forms['YOUR_ASPNET_FORMID'];
if (!theForm) {
theForm = document.YOUR_ASPNET_FORMID;
}
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
};
}
如何解决ASP.NET网站'__doPostBack' is undefined的脚本错误的更多相关文章
- 解决ASP.NET网站发布问题
目录 前言 开始 aspx.cs文件放到单独的类库项目 一个可选择勾选页面的发布工具:LimusicAddin 前言 Asp.net 发布分为:动态编译和预编译.预编译又分为:In Place Pre ...
- ASP.NET网站单独
解决ASP.NET网站单独发布指定页面问题 目录 前提 开始 aspx.cs文件放到单独的类库项目 一个可选择勾选页面的发布工具:LimusicAddin 前提 Asp.net 发布分为:动态编译和预 ...
- 关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法
关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法 问题如下图所示,方法是去掉: <i ...
- 【ASP.NET 问题】ASP.NET 网站404页面返回200,或者302的解决办法
做网站在优化网站时遇到了跳转404页面却返回 200.302状态的问题,这样的话搜索引擎会认为这个页面是一个正常的页面,但是这个页面实际是个错误页面,虽然对访问的用户而言,HTTP状态码是“404”还 ...
- asp.net网站防恶意刷新的Cookies与Session解决方法
本文实例讲述了asp.net网站防恶意刷新的Cookies与Session解决方法,是WEB程序设计中非常实用的技巧.分享给大家供大家参考.具体实现方法如下: Session版实现方法: public ...
- IE Error: '__doPostBack' is undefined 问题解决
突然遇到个很奇怪的BUG,翻页控件,其他浏览器一切正常,IE无法翻页,会提示 '__doPostBack' is undefined 后来搜索发现: [原文發表地址] Bug and Fix: ASP ...
- ASP.NET网站优化(转自一位博友的文章,写的非常好)
不修改代码就能优化ASP.NET网站性能的一些方法 阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一 ...
- 不修改代码就能优化ASP.NET网站性能的一些方法
阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不 ...
- ASP.NET网站中获取当前虚拟目录的应用程序目录的方法(转)
[原创]ASP.NET网站中获取当前虚拟目录的应用程序目录的方法 ASP.NET网站中获取当前虚拟目录的应用程序目录的方法1.问题描述:有时候,某个网页控件会被不同目录下文件使用,此时如果该控件中有一 ...
随机推荐
- nginx环境下配置nagiosQL-关于nagiosql配置文件
接上文:nginx环境下配置nagios-关于nginx.conf nagiosql文件应该处于conf/domain/目录下 nagiosql配置如下: ; gzi ...
- flex中通过sprite在地图上画柱状图主要代码
1.主要代码: var sprite:Sprite = new Sprite(); var columnSys:ColumnSymbol = new ColumnSymbol(); v ...
- iOS应用之微信支付集成-直接前端集成
所有信息的生成都在前端完成,包括对订单进行sign签名以及MD5签名加密(此方法相对来说有些复杂,没有官方给的方法简单).注:官方给的是v3&v4支付流程,签名和加密都是在服务器端进行,由于没 ...
- 使用Intellij idea开发
使用IntelliJ IDEA开发SpringMVC网站(一)开发环境 使用IntelliJ IDEA开发SpringMVC网站(二)框架配置 使用IntelliJ IDEA开发SpringMVC网站 ...
- Matlab学习(一):数字图像处理大作业用到的函数
1.dlmread——将以 ASCII 码分隔的数值数据读入到矩阵中 dt = dlmread(,); dt = dt(:,); save('data2.txt','dt','-ascii'); 2. ...
- LeetCode340 Longest Substring with At Most K Distinct Characters
This is a question needs pay for , I have no money to pay ,so just write some test case by myself. I ...
- 使用JMeter进行负载测试——终极指南
这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 JMeter的实现方式以及采用的技术 安 ...
- Sql Server 查询第30条数据到第40条记录数
1.select top 10 * from (select top 40 * from tablename order by id desc);
- UICollectionCell可移动的逻辑
- 【Java】XML解析之JDOM
JDOM介绍 JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析.生成.序列化以及多种操作.使用jdom需要引入jdom.jar包. XML生成及解析 代码如下: pac ...