0

交叉邮件: 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<AutoroutePart>()是空的,并检查了内容项的部分(通过this.ContentItem.Parts),没有 AutoroutePart。由于它为 null,因此在尝试检索属性 DisplayAlias 时会引发 null 引用异常。

见下图:

在此处输入图像描述

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

4

1 回答 1

1

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

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

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

于 2013-12-18T15:44:56.810 回答