ロールを組み合わせるとエラーが発生する


解説

Web.config ファイルで次のロールの組み合わせが構成されている場合、マーケティング操作、エクスペリエンス アナリティクス、およびPath アナライザー アプリケーションが起動しない場合があります:
ContentManagement、ProcessingおよびReporting

これは、構成ファイルの一部に誤ったrole:require属性があることで競合が発生し、NotSupportedExceptionSystem.NullReferenceExceptionなどの例外が起きることが原因で発生します。以下のエラー メッセージがログに出力される場合があります:

ERROR One or more exceptions occurred while processing the subscribers to the 'item:creating' event.
Exception: System.NotSupportedException 
Message: Getting definition by alias is not supported. 
   Sitecore.Marketing.Operations.Xdb.ReferenceData.Service.Definitions.DefinitionReferenceDataRepositoryBase`4.GetByAlias(String alias, CultureInfo cultureInfo, Boolean includeInactiveVersion) +62
   Sitecore.Marketing.Definitions.DefinitionManagerBase`2.GetByAlias(String alias, CultureInfo cultureInfo, Boolean includeInactiveVersion) +216
   Sitecore.Analytics.Data.DefinitionCollection`1.get_Item(String name) +156
   Sitecore.Analytics.Data.TrackingField.ValidateLinks(LinksValidationResult result) +977
   Sitecore.Links.ItemLinks.AddLinks(Field field, List`1 links, ItemLinkState linkState) +179
   Sitecore.Links.ItemLinks.GetLinks(ItemLinkState linkState, Boolean allVersions, Boolean includeStandardValuesLinks) +1125
...
Exception: System.NullReferenceException
Message: Object reference not set to an instance of an object.
Source: Sitecore.Analytics
   at Sitecore.Analytics.Data.TrackingField.ValidateLinks(LinksValidationResult result)
   at Sitecore.Links.ItemLinks.AddLinks(Field field, List`1 links, ItemLinkState linkState)
   at Sitecore.Links.ItemLinks.GetLinks(ItemLinkState linkState, Boolean allVersions, Boolean includeStandardValuesLinks)
   at Sitecore.Links.ItemLinks.GetValidLinks(Boolean allVersions)
   at Sitecore.Publishing.Pipelines.GetItemReferences.AddItemLinkReferences.GetReferences(Item item, Boolean sharedOnly, HashSet`1 processedItems)
   at Sitecore.Publishing.Pipelines.GetItemReferences.AddItemLinkReferences.GetItemReferences(PublishItemContext context)
   at Sitecore.Publishing.Pipelines.GetItemReferences.GetItemReferencesProcessor.Process(PublishItemContext context)
   at (Object , Object )
   at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists)
   at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, Boolean failIfNotExists)
   at Sitecore.Publishing.Pipelines.GetItemReferences.GetItemReferencesPipeline.Run(PublishItemContext context, Boolean failIfNotExists)
...

解決策

この問題を解決するには、(必要に応じて)以下の構成ファイルをバックアップして更新してください。role:require属性は、貴社のソリューションの構成次第では、すでに正しく設定されている可能性があることに注意してください。