【问题标题】:DotNetNuke crashed after updating to v6.1.1 from 5.3.1DotNetNuke 从 5.3.1 更新到 v6.1.1 后崩溃
【发布时间】:2011-11-20 20:20:33
【问题描述】:

将 DNN 更新到最新版本后,我的网站无法正常工作。我怀疑这是与主题相关的问题,因为我一直在进行一些调试。但我无法进一步缩小范围。

我网站的当前堆栈跟踪如下所示:

[NullReferenceException: Object reference not set to an instance of an object.]
    DotNetNuke.UI.Containers.ActionBase.get_ModuleContext() +6
    DotNetNuke.UI.Containers.ActionBase.get_ActionRoot() +30
    DotNetNuke.UI.Containers.ActionBase.OnLoad(EventArgs e) +42

[ModuleLoadException: An error has occurred.]
    DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(String FriendlyMessage, Control ctrl, Exception exc, Boolean DisplayErrorMessage) +400

[PageLoadException: An error has occurred.]
    DotNetNuke.Services.Exceptions.Exceptions.ProcessPageLoadException(Exception exc, String URL) +323
    DotNetNuke.Services.Exceptions.Exceptions.ProcessPageLoadException(Exception exc) +89
    DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(String FriendlyMessage, Control ctrl, Exception exc, Boolean DisplayErrorMessage) +525
    DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(Control ctrl, Exception exc, Boolean DisplayErrorMessage) +189
    DotNetNuke.Services.Exceptions.Exceptions.ProcessModuleLoadException(Control ctrl, Exception exc) +40
    DotNetNuke.UI.Containers.ActionBase.OnLoad(EventArgs e) +85
    DotNetNuke.Web.DDRMenu.Actions.OnLoad(EventArgs e) +67
    System.Web.UI.Control.LoadRecursive() +50
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Control.LoadRecursive() +141
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

[PageLoadException: An error has occurred.]
    DotNetNuke.Services.Exceptions.Exceptions.ProcessPageLoadException(Exception exc, String URL) +323
    DotNetNuke.Framework.PageBase.OnError(EventArgs e) +450
    System.Web.UI.Page.HandleError(Exception e) +84
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +6776
    System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +242
    System.Web.UI.Page.ProcessRequest() +80
    System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
    System.Web.UI.Page.ProcessRequest(HttpContext context) +49
    ASP.default_aspx.ProcessRequest(HttpContext context) in c:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\root\84194812\86a29f2c\App_Web_toxjy2nh.0.cs:0
    System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75

从这里我可以看出它与 DDRMenu 组件有关。我已经为该站点尝试了我自己的皮肤,对于那些完全相同的行说明了有关 SolPartMenu/Action 的内容。

非常感谢您的帮助!

【问题讨论】:

  • 经过进一步调查,我发现问题仅在登录时出现。

标签: c# asp.net dotnetnuke dotnetnuke-5 dotnetnuke-6


【解决方案1】:

我在测试迁移到 6.x 时遇到了同样的问题,您需要拥有最新版本的 DDR 菜单,但我怀疑因为您无法登录,所以无法安装它。

我不确定哪些步骤,如果有的话,你可以删掉,但这就是我所做的。

  1. 从备份恢复到 5.6.3
  2. 在主机设置中关闭压缩
  3. 将 Minimal Extropy 设置为默认皮肤
  4. 将 en-US 设置为默认语言(不确定是否有必要,这是一次升级,我现在倾向于为重大升级这样做)
  5. 在 web.config 中将 DNN Nav 设置为默认导航提供程序
  6. 更改要使用的容器
  7. 卸载 DDRmenu 1.2.2
  8. 删除 web.config 中的 DDRMenuNavigationProvider
  9. 对数据库和文件系统进行新备份
  10. 升级到 6.x
  11. 升级到 DDR 菜单 v2.00.0
  12. 将应用程序池设置为使用 .Net4
  13. 将皮肤重新应用到几个页面以检查所有工作,如果确定则重置默认皮肤
  14. 如有必要,重置压缩和默认语言

希望对你有帮助

【讨论】:

    【解决方案2】:

    您看到的问题是由于 DNN 升级程序的运行方式与新 DDR 菜单想要升级的方式之间的冲突造成的。 DNN 升级程序将 DDRMenu.dll 推送到 bin 目录中,但不为其运行 IUpgrade 代码,因此 DLL、代码和 web.config 设置不匹配。下一个版本的 DDR 菜单应该可以解决这个问题。

    Barry 的建议应该可以解决这个问题,尽管它比我采取的步骤更多。我要尝试的第一件事是用升级前的旧 DDRMenu DLL (DotNetNuke.Web.DDRMenu.dll) 替换新的 DDRMenu DLL (DotNetNuke.Web.DDRMenu.dll),看看这是否能让您的网站运行。如果是这样,那么您可以安装最新版本的 DDRMenu,您应该一切顺利。

    如果这不起作用,我通常会尝试在升级之前将代码和代码中的设置组合起来,并在问题解决之前顺利安装 DNN 6.1.1。我希望我有一个更具体的答案,但我通常很匆忙(因为网站已关闭)所以我没有花时间写一个更科学的方法。

    同样,下一个版本的 DDR 菜单应该可以解决这个问题,并且该问题只会影响已经在使用 DDR 菜单的站点。但是,它仍然没有应有的顺利。

    【讨论】:

      猜你喜欢
      • 2020-08-12
      • 2019-07-12
      • 2021-11-16
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-01
      • 2019-07-25
      相关资源
      最近更新 更多