2013-12-18 6 views
0

올리지 : https://orchard.codeplex.com/discussions/474456NullReferenceException이 <AutoroutePart>()의 과수원 CMS 1.7.2

나는 오차드 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 { 
     get { return this.As<AutoroutePart>().DisplayAlias; } 
     set { this.As<AutoroutePart>().DisplayAlias = value; } 
    } 

나는 더 AutoroutePart이없는, this.As<AutoroutePart>()가 null이며, (this.ContentItem.Parts 통해) 컨텐트 항목의 일부를 체크 아웃하는 것을 알아 냈다. null이기 위해 DisplayAlias ​​속성을 검색 할 때 null 참조 예외가 발생합니다.

아래

참조 이미지 :

enter image description here

이 알려진 문제인가? 해결 방법은 무엇입니까? 내 사이트의 속도가 느려지는 원인인가요?

답변

1

이러한 예외가 분명히 성능에 영향을 미치지 만 눈에 띄는 속도 저하를 일으킬 수 있습니다.

예외는 AutoroutePart에 따라 분류 체계의 TermPart로 인해 발생합니다. 즉, 콘텐츠 항목이 AutoroutePart를 사용하지 않는 경우 (매우 희귀 한 IMO가 있어야 함)이 예외가 표시됩니다. TermPart를 Autoroute에 의존하게 만드는 것은 의심스러운 디자인 결정입니다 (적어도 IAliasAspect를 대신 사용할 수 있음). 어떻게 든 해결해야하기 때문에 문제에 대한 버그 보고서를여십시오.

그 동안 예외를 없애기 위해 해당 콘텐츠 유형에 AutoroutePart를 첨부 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 ARP를 필요로하지 않고 필요로하지 않는 모든 기존 CT들에 첨부하지 않을 것입니다. 일시적으로 TermPart를 업데이트하는 것이 더 이상적이라고 생각합니다. – AnimaSola