【问题标题】:__doPostBack is undefined on DotNetNuke website for IE 10__doPostBack 在 IE 10 的 DotNetNuke 网站上未定义
【发布时间】:2012-10-23 14:49:07
【问题描述】:

我有一个 DotNetNuke site,今天一位客户打来电话说它在 IE 10 上不起作用。特别是登录和注册链接不起作用,但它们在兼容模式下起作用。我查看了我们的测试 Windows 8 机器,发现它失败了,因为 __doPostBack 未定义。在过去的 6 个小时里,我一直在寻找修复程序,而我能够找到的是,IE10 用户代理显然包含在 ie.browser 文件中,我应该安装 this hotfix 并重新启动服务器.那没有用。我没有注意到任何变化,即使我认为新的 ie.browser 文件应该与新的用户代理匹配。

我还可以采取哪些其他步骤来解决问题?注意:服务器在 Windows server 2003 上运行带有 service pack 1 的 .NET 3.5。该站点运行的是 DotNetNuke 05.06.02。任何建议将不胜感激。

【问题讨论】:

  • 如果出于任何原因您的项目中有目录App_Browsers,并且在那里有ie.browser,并且不更改它,但仅应用补丁,更新全局ie.browser,您的项目过于繁琐,不允许补丁实际解决问题。这里的问题是通过更改浏览器定义来解决的。
  • @Aristos 我的站点 App_Browsers 文件夹中没有 ie.browser 文件。
  • 好的,那么对于我来说,下载这个文件http://www.hanselman.com/blog/content/binary/App_BrowsersUpdate.zip,然后比较一下你的ie.browser和你的global是否相同。
  • @Aristos 我复制了那个文件,它工作了。
  • 然后请编辑 remco 的答案,输入你所做的,然后接受。

标签: asp.net windows-8 dotnetnuke windows-server-2003 internet-explorer-10


【解决方案1】:

【讨论】:

  • 我已经尝试安装修补程序并将 ie.browser 文件添加到 App_Browsers 文件夹,每次都重新启动服务器。都没有解决问题。
  • 您是否为所有版本的 .net 应用了修补程序? 2.0 和 4.0?我认为 dotnetnuke 5 和 6 默认为 .Net 2.0
  • 我安装了 2.0 修补程序。我没有在服务器上安装 .net 4.0。我最新的是 3.5 sp1
  • 很奇怪,也许 dotnetnuke 会覆盖浏览器检测。
  • hanselman.com/blog/content/binary/App_BrowsersUpdate.zip - 包含修补程序应该更新的 .browser 文件。复制完 ie.browser 文件后,它开始工作了。
【解决方案2】:

在我的生产站点上,我尝试了一些方法,但没有成功。

我安装了修补程序并重新启动 - 不好

我复制了更新后的 ie.browser 文件 - 不好

我尝试修改 default.browser、ie.browser 和 mozilla.browser 文件来为所有内容启用 javascript - 不好。

我做的一件事最终使它工作(这应该适用于一切)是在Default.aspx.vb 文件的InitializePage 函数中,我将此行添加到子例程的开头

Page.ClientTarget = "uplevel"

这应该(据我了解)将所有浏览器视为可以处理 javascript 和 cookie 以及我们需要的所有其他东西。我觉得这是一个相当安全的赌注。

【讨论】:

  • 谢谢!这对我有用。我有一个继承自 System.Web.UI.Page 的 BasePage 类,它又是站点中页面类的超类。我将预加载事件处理程序添加到 BasePage,ie10 问题就消失了。像这样 (c#): protected void Page_PreLoad(object sender, EventArgs e) { this.ClientTarget = "uplevel"; }
【解决方案3】:

如果 web.config 中存在另一个配置,它会覆盖 Scott Hanselman 提出的修复:

<browserCaps>

ASP.NET 浏览器功能嗅探器可以通过 3 种方式进行配置(相互覆盖):

  1. Machine wide in &lt;windir&gt;\Microsoft.NET\Framework\&lt;ver&gt;\CONFIG\Browsers
  2. Site only by using .browser files in App_Browsers folder
  3. Site only by using &lt;browserCaps&gt; Element in web.config

对于 IE10,在 &lt;browserCaps&gt; &lt;case "Mozilla .. MSIE ..&gt; 下添加以下案例:

<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>

【讨论】:

  • 安东,天哪,你不知道我花了多长时间才看到在我的项目中他们在网络配置中定义了这些......非常感谢!
  • 也去过那里 :) 很高兴我能帮上忙。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-29
  • 2013-11-23
  • 2013-02-22
  • 2016-06-26
  • 2013-06-29
  • 1970-01-01
相关资源
最近更新 更多