最近碰到一个很奇怪的问题!

  新发布一个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的脚本错误的更多相关文章

  1. 解决ASP.NET网站发布问题

    目录 前言 开始 aspx.cs文件放到单独的类库项目 一个可选择勾选页面的发布工具:LimusicAddin 前言 Asp.net 发布分为:动态编译和预编译.预编译又分为:In Place Pre ...

  2. ASP.NET网站单独

    解决ASP.NET网站单独发布指定页面问题 目录 前提 开始 aspx.cs文件放到单独的类库项目 一个可选择勾选页面的发布工具:LimusicAddin 前提 Asp.net 发布分为:动态编译和预 ...

  3. 关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法

    关于asp.net 网站网站发布时提示:错误 27 对路径 AppData\Local\Temp\~632b\bin\App_Code.compil的解决方法 问题如下图所示,方法是去掉: <i ...

  4. 【ASP.NET 问题】ASP.NET 网站404页面返回200,或者302的解决办法

    做网站在优化网站时遇到了跳转404页面却返回 200.302状态的问题,这样的话搜索引擎会认为这个页面是一个正常的页面,但是这个页面实际是个错误页面,虽然对访问的用户而言,HTTP状态码是“404”还 ...

  5. asp.net网站防恶意刷新的Cookies与Session解决方法

    本文实例讲述了asp.net网站防恶意刷新的Cookies与Session解决方法,是WEB程序设计中非常实用的技巧.分享给大家供大家参考.具体实现方法如下: Session版实现方法: public ...

  6. IE Error: '__doPostBack' is undefined 问题解决

    突然遇到个很奇怪的BUG,翻页控件,其他浏览器一切正常,IE无法翻页,会提示 '__doPostBack' is undefined 后来搜索发现: [原文發表地址] Bug and Fix: ASP ...

  7. ASP.NET网站优化(转自一位博友的文章,写的非常好)

    不修改代码就能优化ASP.NET网站性能的一些方法 阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一 ...

  8. 不修改代码就能优化ASP.NET网站性能的一些方法

    阅读目录 开始 配置OutputCache 启用内容过期 解决资源文件升级问题 启用压缩 删除无用的HttpModule 其它优化选项 本文将介绍一些方法用于优化ASP.NET网站性能,这些方法都是不 ...

  9. ASP.NET网站中获取当前虚拟目录的应用程序目录的方法(转)

    [原创]ASP.NET网站中获取当前虚拟目录的应用程序目录的方法 ASP.NET网站中获取当前虚拟目录的应用程序目录的方法1.问题描述:有时候,某个网页控件会被不同目录下文件使用,此时如果该控件中有一 ...

随机推荐

  1. MySql中的tinying,smallint,int,bigint的类型介绍——转载

    tinyint 从 0 到 255 的整型数据.存储大小为 1 字节. smallint 从 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型数据.存储大小为 2 个字节 ...

  2. swift使用swifthttp

    1.https://github.com/daltoniam/SwiftHTTP下载 2.将项目中的Source文件夹中的所有.swift拖到项目中 3.不用import 4.直接用HTTP.GET或 ...

  3. asp.net mvc 模型验证-最舒服的验证方式

    在院子里发现 http://www.cnblogs.com/yangecnu/p/3759784.html 模型验证方法 1. 一般方法 繁琐, 无数的if else, 在炎炎夏天,我见过一个验证方法 ...

  4. C++(MFC)中WebBrowser去除3D边框的方法(实现IDocHostUIHandler接口)控制 WebBrowser 控件的外观和行为

    在 CSDN 上经常看到以下两个问题:1.在 MFC 应用程序中,如果创建了一个 WebBrowser 控件(包括 CHtmlView 在内),如何可以把该控件的三维边框禁止掉?2.在 MFC 应用程 ...

  5. zabbix快速安装

    运维什么的其实感觉根本没有什么好写的了,因为太简单了嘛,尤其是这个监控,整得那么麻烦要干嘛,不过貌似很多人喜欢这个,我就随手写一点吧 环境:centos7.2.1511最简安装,就是什么都不选直接就开 ...

  6. winform-全局异常捕获作用

    using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;using Jxs ...

  7. Selenium2+python自动化12-操作元素(键盘和鼠标事件)

    前言 在前面的几篇中重点介绍了一些元素的到位方法,到位到元素后,接下来就是需要操作元素了.本篇总结了web页面常用的一些操作元素方法,可以统称为行为事件 有些web界面的选项菜单需要鼠标悬停在某个元素 ...

  8. 摘抄——读《大话移动APP测试 Android与IOS》

    用了两天读完了<大话移动APP测试 Android与IOS>,由于刚开始接触移动测试,技术型的篇章只能先放过了o(╯□╰)o,有以下内容觉得很有必要时不时的看看,来反思自己的工作,自勉!! ...

  9. 让IE8支持HTML5及canvas功能!chart.js图表绘制工具库IE8上兼容方案

    第一步,我们加上对html5的支持. <!--[if IE]> <script src="/public/html5.js" type="text/ja ...

  10. 【Linux】LAMP环境的搭建

    LAMP定义 LAMP指的Linux(操作系统).ApacheHTTP 服务器,MySQL(有时也指MariaDB,数据库软件) 和PHP(有时也是指Perl或Python) 的第一个字母,一般用来建 ...