2017-02-15 9 views
0
Iが注入 DataFactoryFindPagesWithCriteria(PageReference pageLink, PropertyCriteriaCollection criterias)を呼び出していると私は取得してい

NullReferenceExceptionDefaultPageCriteriaQueryService.GetProviderQueryService()で:とNullReferenceException

【とNullReferenceException:オブジェクト参照 オブジェクトのインスタンスに設定されていません]
EPiServer.Core.DefaultPageCriteriaQueryService.GetProviderQueryService(のContentProvider プロバイダ)+44
EPiServer.Core.DefaultPageCriteriaQueryService.FindPagesWithCriteriaInternal(PageReferenceオブジェクト pageLink、PropertyCrit eriaCollection用のcriterias、文字列languageBranch、 ILanguageSelectorセレクタ、FindPagesWithCriteriaDelegate findPagesDelegate)293
EPiServer.Core.DefaultPageCriteriaQueryService.FindPagesWithCriteria(PageReferenceオブジェクト pageLink、PropertyCriteriaCollection用のcriterias、文字列languageBranch、 ILanguageSelectorセレクタ)124
EPiServer.DataFactory.FindPagesWithCriteria(私はEpiserverのシンボルサーバーをフックアップしました

PageReferenceオブジェクトpageLink、 PropertyCriteriaCollectionののcriterias)115
...コードをステップインして、DefaultPageCriteriaQueryServiceで私はGetProviderQueryService()に渡されているContentProviderがNREにつながることがわかります。 _providerManager.ProviderMap.GetDefaultProvider()リターンヌルため_providerManager.ProviderMapが空であるということで犯人と

case TypeOfSearch.Local: 
     return findPagesDelegate(pageLink, tempCriteria, languageBranch, selector, this.GetProviderQueryService(this._providerManager.ProviderMap.GetDefaultProvider())); 

:このメソッドを呼び出す行はこれです。以前はこの問題は経験したことがなく、初期化する必要がある場合はProviderMapに関する関連情報を見つけることができません。

なぜこの問題が発生していますか?私のProviderMapはなぜ空ですか?私のProviderMapにデフォルトプロバイダがあるべきですか?

答えて

5

DataFactoryはシングルトンだから注入できないと思います。ただし、代わりにFindPagesWithCriteriaメソッドを持つEPiServer.Core.IPageCriteriaQueryServiceを注入できます。

0

@Andreasが指摘しているように、それは依存性注入の問題です。私はIConfigurableModuleに以下のタイプバインディングを追加しました。今はすべて正常に動作します:

cfg.For<DataFactory>().Use(() => DataFactory.Instance); 
cfg.For<IContentRepository>().Use(() => DataFactory.Instance); 
cfg.For<IContentLoader>().Use(() => DataFactory.Instance);