在Orchard CMS 1.7.2中由null TermPart.As <autoroutepart>()引起的NullReferenceException </autoroutepart>

时间:2013-12-18 08:26:48

标签: orchardcms nullreferenceexception orchardcms-1.7

crosspost: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中找到了函数public string Slug(第16行)。

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

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

见下图:

enter image description here

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

1 个答案:

答案 0 :(得分:1)

虽然有这些例外肯定会对性能产生影响,但我怀疑它可能导致明显的放缓。

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

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