调用FindPagesWithCriteria()时出现NullReferenceException

Gre*_*g B 0 episerver episerver-7

我打电话FindPagesWithCriteria(PageReference pageLink, PropertyCriteriaCollection criterias)的注入DataFactory,我得到一个NullReferenceException在DefaultPageCriteriaQueryService.GetProviderQueryService():

[NullReferenceException:对象引用未设置为对象的实例.]
EPiServer.Core.DefaultPageCriteriaQueryService.GetProviderQueryService(ContentProvider provider)+44
EPiServer.Core.DefaultPageCriteriaQueryService.FindPagesWithCriteriaInternal(PageReference pageLink,PropertyCriteriaCollection criterias,String languageBranch,ILanguageSelector selector,FindPagesWithCriteriaDelegate findPagesDelegate )+293
EPiServer.Core.DefaultPageCriteriaQueryService.FindPagesWithCriteria(PageReference pageLink,PropertyCriteriaCollection Criterias,String languageBranch,ILanguageSelector selector)+124
EPiServer.DataFactory.FindPagesWithCriteria(PageReference pageLink,PropertyCriteriaCollection standarderias)+115
...

我已经连接了Episerver符号服务器并逐步完成了代码,深入了解DefaultPageCriteriaQueryService我可以看到ContentProvider传入的GetProviderQueryService()是null,导致NRE.调用此方法的行是这样的:

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

罪魁祸首是_providerManager.ProviderMap.GetDefaultProvider()返回null因为_providerManager.ProviderMap是空的.我之前从未遇到过这个问题,如果应该初始化,我找不到有关ProviderMap的任何相关信息.

为什么我会遇到这个问题?为什么我的ProviderMap为空?我的ProviderMap应该有默认提供商吗?

小智 5

我不认为你可以注入DataFactory,因为它是一个单例.但是你可以注入EPiServer.Core.IPageCriteriaQueryService哪种FindPagesWithCriteria方法.