【问题标题】:DNN 5 load error (NullReferenceException) under IE11IE11下DNN 5加载错误(NullReferenceException)
【发布时间】:2013-12-16 18:56:38
【问题描述】:

有人要求我对使用 DNN5.0 创建的旧网站进行故障排除

问题仅在使用 IE11 时存在。在以前的版本中一切正常,在使用其他浏览器(Chrome、Firefox)时也是如此。

我设法发现这是由从 IE 发送到服务器的用户代理引起的。当它设置为默认 IE11 值(User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko DNN 时会生成错误,当我使用开发人员工具将其更改为 IE10 时,一个 (User-Agent: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)) 网站加载没有任何问题。将网站添加到兼容性视图列表也有帮助 - 它也在更改用户代理:User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3)

当 DNN 使用默认的 IE11 用户代理标头为 IE10 用户代理行为提供服务时,是否可以更改 DNN 行为?我没有用谷歌搜索任何有趣的东西。

错误详情:

InnerException:对象引用未设置为对象的实例。

方法:DotNetNuke.UI.WebControls.MenuNodeWriter.Render

堆栈跟踪:

消息:DotNetNuke.Services.Exceptions.PageLoadException:对象 引用未设置为对象的实例。 ---> System.NullReferenceException:对象引用未设置为实例 的一个对象。在 DotNetNuke.UI.WebControls.MenuNodeWriter.Render(HtmlTextWriter writer) 在 DotNetNuke.UI.WebControls.MenuNodeWriter.RenderNode(HtmlTextWriter 作家,MenuNode 节点)在 DotNetNuke.UI.WebControls.MenuNode.Render(HtmlTextWriter writer) 在 DotNetNuke.UI.WebControls.DNNMenuWriter.RenderChildren(HtmlTextWriter 作家)在 DotNetNuke.UI.WebControls.DNNMenuWriter.RenderContents(HtmlTextWriter 作家)在 System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter 作家)在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 作家,ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter 作家, ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 在 DotNetNuke.UI.WebControls.DNNMenuWriter.RenderMenu(HtmlTextWriter 作家,DNNMenu 菜单)在 DotNetNuke.UI.WebControls.DNNMenu.Render(HtmlTextWriter writer) 在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 编写器, ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter 作家, ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 在 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家, ICollection 儿童)在 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 在 System.Web.UI.Control.Render(HtmlTextWriter writer) 在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 编写器, ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter 作家, ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 在 ASP.portals__default_skins_minimalextropy_index_ascx._渲染_control1(HtmlTextWriter __w, Control parameterContainer) 在 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection 儿童)在 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 在 System.Web.UI.Control.Render(HtmlTextWriter writer) 在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 编写器, ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter 作家, ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 在 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家, ICollection 儿童)在 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 在 System.Web.UI.Control.Render(HtmlTextWriter writer) 在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 编写器, ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter 作家, ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 在 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家, ICollection 儿童)在 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 在 System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter 作家)在 System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter 作家)在 System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter 输出)在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 作家,ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter 作家, ControlAdapter 适配器)在 System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter 作家)在 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家,ICollection 儿童)在 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 在 System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter 作家)在 System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 作家,ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter 作家, ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 在 ASP.default_aspx._渲染_control1(HtmlTextWriter __w, Control 参数容器)在 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter 作家, ICollection 儿童)在 System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) 在 System.Web.UI.Page.Render(HtmlTextWriter writer) 在 DotNetNuke.Framework.PageBase.Render(HtmlTextWriter writer) at System.Web.UI.Control.RenderControlInternal(HtmlTextWriter 编写器, ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter 作家, ControlAdapter 适配器)在 System.Web.UI.Control.RenderControl(HtmlTextWriter writer) 在 System.Web.UI.Page.ProcessRequestMain(布尔值 includeStagesBeforeAsyncPoint,布尔型 includeStagesAfterAsyncPoint) --- 内部异常堆栈跟踪结束 ---

【问题讨论】:

    标签: dotnetnuke dotnetnuke-5


    【解决方案1】:

    我遇到了同样的问题,您对用户代理字符串的识别是正确的。

    将 browserCaps 部分添加到您的 web.config 以修补它。我使用了以下内容:

      <system.web>
        <browserCaps>
          <!-- IE 11 Patch //-->
          <case match="Trident\/7.0; rv:(?'version'(?'major'\d+)(\.(?'minor'\d+)?)(?'letters'\w*))(?'extra'[^)]*)">
            browser=IE
            layoutEngine=Trident
            layoutEngineVersion=0${layoutVersion}
            frames=true
            tables=true
            cookies=true
            javascript=true
            javaapplets=true
            ecmascriptversion=1.5
            w3cdomversion=1.0
            css1=true
            css2=true
            xml=true
            tagwriter=System.Web.UI.HtmlTextWriter
            screenBitDepth=8
            isColor=true
            extra=${extra}
            letters=${letters}
            <case match="rv:(?'version'(?'major'\d+)(?'minor'\.\d+)(?'letters'\w*))">
              version=${version}
              majorversion=0${major}
              minorversion=0${minor}
              type=IE${major}
            </case>
          </case>
        </browserCaps>
    

    【讨论】:

      【解决方案2】:

      可能是这样的: http://www.hanselman.com/blog/IE10AndIE11AndWindows81AndDoPostBack.aspx

      我建议遵循 DNN 中的文档升级路径并升级到更新的版本,看看您的问题是否会消失。

      http://www.dnnsoftware.com/wiki/page/suggested_upgrade_path

      显然备份所有内容并在开发/暂存环境中执行此操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-12
        • 1970-01-01
        • 1970-01-01
        • 2018-01-20
        • 2016-03-02
        • 1970-01-01
        • 2017-05-28
        • 1970-01-01
        相关资源
        最近更新 更多