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时会引发空引用异常。
见下图:
这是一个已知问题吗?任何解决方法?这是导致我的网站速度变慢的原因吗?
答案 0 :(得分:1)
虽然有这些例外肯定会对性能产生影响,但我怀疑它可能导致明显的放缓。
异常是由Taxonomies的TermPart引起的,具体取决于AutoroutePart;即如果您的内容项不使用AutoroutePart(IMO应该是非常罕见的),那么您将看到此异常。使TermPart依赖于Autoroute是一个值得怀疑的设计决策(至少它可以使用IAliasAspect)。请打开一个关于这个问题的错误报告,因为这应该以某种方式解决。
与此同时,您可以将AutoroutePart附加到相关内容类型中,以消除异常。