在IE 10上,DotNetNuke网站中的doPostBack未定义

9
我有一个DotNetNuke 网站,今天客户打来电话说在IE 10上无法使用。具体地,登录和注册链接无法使用,但在兼容模式下可以。我在我们的测试Windows 8机器上看到它失败了,因为__doPostBack未定义。我已经搜索了近6个小时的解决方法,我能找到的是显然IE10用户代理在ie.browser文件中被覆盖了,我应该安装这个补丁程序并重新启动服务器。但那没用。我没有注意到任何变化,尽管我认为新的ie.browser文件应该与新的用户代理匹配。

我还可以采取哪些步骤来解决问题?注意:服务器正在运行Windows Server 2003上的.NET 3.5服务包1。该网站正在运行DotNetNuke 05.06.02。任何建议将不胜感激。


如果您的项目中出现了名为App_Browsers的目录,并且其中有ie.browser文件,您只应用补丁而不更改它,则可能会覆盖全局的ie.browser文件。这将导致无法修复此问题。解决此问题需要更改浏览器定义。 - Aristos
@Aristos,我的网站App_Browsers文件夹中没有ie.browser文件。 - nick
好的,那么请下载这个文件 http://www.hanselman.com/blog/content/binary/App_BrowsersUpdate.zip 并比较一下你的ie.browser文件和全局的是否相同。 - Aristos
1
@Aristos 我复制了那个文件过去,它就可以工作了。 - nick
然后请编辑remco的答案,在那里输入您所做的内容,并接受它。 - Aristos
3个回答

9

我已经尝试过安装热修复补丁和将ie.browser文件添加到App_Browsers文件夹中,在每次操作后重新启动服务器。但是这两种方法都没有解决问题。 - nick
你是否应用了所有版本的.NET热修补程序?2.0和4.0?我认为DotNetNuke 5和6默认使用.NET 2.0。 - Remco Ros
我安装了2.0的热修复补丁。服务器上没有安装.NET 4.0,最新版本是3.5 SP1。 - nick
4
这是一个下载链接,里面包含了需要更新的 .browser 文件。将 ie.browser 文件复制到对应位置后,程序就可以正常运行了。 - nick
微软的热补丁安装时间很长(大约10分钟),但它起作用并解决了问题(服务器2003)。你救了我(和我的女友)一夜,谢谢! - Tillito
显示剩余2条评论

4
在我的生产网站上,我尝试了几种方法,但都没有起作用。
我安装了热修复并重新启动 - 没有好转。
我复制了更新的ie.browser文件 - 没有好转。
我尝试修改default.browser、ie.browser和mozilla.browser文件以启用所有javascript - 没有好转。
我最终做的一件事是(这应该适用于所有情况),在Default.aspx.vb文件的InitializePage函数中,我在子程序的开头添加了这行代码。请保留HTML标记:
Page.ClientTarget = "uplevel"

从我的理解来看,这应该将所有浏览器视为能够处理javascript、cookies和我们需要的所有其他东西。我认为这是一个相当安全的赌注。


1
谢谢!这对我很有帮助。我有一个BasePage类,它继承自System.Web.UI.Page,而后者是站点页面类的超类。我在BasePage中添加了preload事件处理程序,ie10问题就解决了。像这样(c#):protected void Page_PreLoad(object sender, EventArgs e) { this.ClientTarget = "uplevel"; } - Ciniod

3

还有一种配置,如果在web.config中存在,则会覆盖Scott Hanselman提出的修复方法:

<browserCaps>

ASP.NET浏览器能力嗅探器可以通过以下3种方式进行配置(彼此覆盖):
  1. <windir>\Microsoft.NET\Framework\<ver>\CONFIG\Browsers中的机器范围设置
  2. 在App_Browsers文件夹中使用.browser文件进行站点限定
  3. 在web.config中使用<browserCaps>元素进行站点限定
对于IE10,请在<browserCaps><case "Mozilla .. MSIE ..">下添加以下内容:
<case match="\d{2,}" with="${version}">
  frames=true
  tables=true
  cookies=true
  backgroundsounds=true
  vbscript=true
  javascript=true
  javaapplets=true
  activexcontrols=true
  tagwriter=System.Web.UI.HtmlTextWriter
  ecmascriptversion=3.0
  msdomversion=${major}${minor}
  w3cdomversion=1.0
  css1=true
  css2=true
  xml=true

  <filter with="${letters}" match="^b">
    beta=true
  </filter>
  <filter with="${extra}" match="Crawler">
    crawler=true
  </filter>
</case>

Anton,天啊,你不知道我花了多长时间才发现他们在web config中定义了这些...非常感谢你! - teewuane
我也去过那里 :) 很高兴能帮到你。 - Anton Skovorodko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接