Sitecore Azure モジュールが構成ファイルの IDTable セクションに誤ってパッチを適用する


説明

Sitecore Azureモジュール2.0以降のバージョンにてデリバリー ファームへの定期的な展開を実行する際に、モジュールが構成ファイルのIDTableセクションに誤ってパッチを適用します。その結果として、Sitecoreシステムが、Azure環境にて「Could not create instance of type: Sitecore.Data.SqlServer.SqlServerIDTable. No matching constructor was found. 」エラーをスローする場合があります。

例外及びスタック トレースの例は次の通りです。

ERROR Exception in alarm clock event subscriber.
Exception: Sitecore.Exceptions.ConfigurationException
Message: Could not create instance of type: Sitecore.Data.SqlServer.SqlServerIDTable. No matching constructor was found.
Source: Sitecore.Kernel
   at Sitecore.Configuration.Factory.CreateFromTypeName(XmlNode configNode, String[] parameters, Boolean assert)
   at Sitecore.Configuration.Factory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper)
   at Sitecore.Configuration.Factory.CreateObject(String configPath, String[] parameters, Boolean assert)
   at Sitecore.Data.IDTables.IDTable.GetKeys(String prefix)
   at Sitecore.ListManagement.ContentSearch.Pipelines.Locking.GetLockedLists.GetLockedLists.Process(GetLockedListsArgs args)
   at (Object , Object[] )
   at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args)
   at Sitecore.ListManagement.ContentSearch.PipelineBasedContactListStore`2.GetLockedListIds()
   at Sitecore.ListManagement.ListManager`2.GetLockedLists()
   at Sitecore.ListManagement.Analytics.UnlockContactListsAgent.Execute()
   at Sitecore.Services.AlarmClock.Heartbeat_Beat(Object sender, EventArgs e)
‌ERROR Scheduling.WebDAVOptionsCleanupAgent: Exception occurred. Exception details:Sitecore.Exceptions.ConfigurationException: Could not create instance of type: Sitecore.Data.SqlServer.SqlServerIDTable. No matching constructor was found.
   at Sitecore.Configuration.Factory.CreateFromTypeName(XmlNode configNode, String[] parameters, Boolean assert)
   at Sitecore.Configuration.Factory.CreateObject(XmlNode configNode, String[] parameters, Boolean assert, IFactoryHelper helper)
   at Sitecore.Configuration.Factory.CreateObject(String configPath, String[] parameters, Boolean assert)
   at Sitecore.Configuration.IDTableWebDAVOptionStore.GetOptionIDs()
   at Sitecore.Configuration.IDTableWebDAVOptionStore.GetExpiredOptions(TimeSpan expirationSpan)
   at Sitecore.Tasks.WebDAVOptionsCleanupAgent.CleanupWebDAVOptions()
   at Sitecore.Tasks.WebDAVOptionsCleanupAgent.Run()

解決策

本事象を解決するには、次の手順を実行します。

  1. /sitecore/system/Modules/Azure/<Environment>/<Location>/<Farm>/Role01/<AzureDeployment>」アイテムにて「Deployment Type Web Config Patch」フィールドの値を以下のように変更します。
    <xsl:template match="sitecore/IDTable/param[@connectionStringName='master']/@connectionStringName">
     <xsl:attribute name="connectionStringName">web</xsl:attribute>
    </xsl:template>
  2. /sitecore/templates/Branches/Azure/Azure Cd Deployment/Deployment Cd」アイテムにて「Deployment Type Web Config Patch」フィールドの値を同じ方法で変更します。
  3. Sitecore Azure アプリケーションにて既存の展開に対して「Upgrade Files」操作を実行します。