【问题标题】:NullReferenceException caused by null TermPart.As<AutoroutePart>() in Orchard CMS 1.7.2NullReferenceException 由 Orchard CMS 1.7.2 中的 null TermPart.As<AutoroutePart>() 引起
【发布时间】:2013-12-18 08:26:48
【问题描述】:

交叉邮件:https://orchard.codeplex.com/discussions/474456

我在 Orchard 1.7.2 上,在我的网站上到处都出现这个错误(我认为这会导致加载时间变慢):

Orchard.DisplayManagement.Implementation.DefaultDisplayManager - NullReferenceException thrown from Action`1 by System.Action`1[[Orchard.DisplayManagement.Implementation.ShapeDisplayingContext, Orchard.Framework, Version=1.7.2.0, Culture=neutral, PublicKeyToken=null]]
System.NullReferenceException: Object reference not set to an instance of an object.

所以我追踪了这个问题,并在 TermPart.cs(第 16 行)中找到了函数 public string Slug。

   public string Slug {
        get { return this.As<AutoroutePart>().DisplayAlias; }
        set { this.As<AutoroutePart>().DisplayAlias = value; }
    }

我发现this.As&lt;AutoroutePart&gt;() 为空,检查内容项的部分(通过this.ContentItem.Parts),没有AutoroutePart。由于它为 null,因此在尝试检索属性 DisplayAlias 时会引发 null 引用异常。

见下图:

这是一个已知问题吗?任何解决方法?这是导致我的网站速度变慢的原因吗?

【问题讨论】:

    标签: orchardcms nullreferenceexception orchardcms-1.7


    【解决方案1】:

    虽然这些异常肯定会对性能产生影响,但我怀疑它会导致明显的减速。

    异常是Taxonomies的TermPart依赖AutoroutePart引起的;即,如果您的内容项不使用 AutoroutePart(IMO 应该很少见),那么您将看到此异常。使 TermPart 依赖于 Autoroute 是一个有问题的设计决策(至少它可以使用 IAliasAspect 代替)。请打开有关该问题的错误报告,因为这应该以某种方式解决。

    与此同时,您可以将 AutoroutePart 附加到相关内容类型以消除异常。

    【讨论】:

    • 感谢您的回复!我宁愿不将 ARP 附加到所有现有的 CT 上,这些 CT 没有也不需要它。我觉得暂时更新一下TermPart比较理想。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    相关资源
    最近更新 更多