Sitecore 在 CD 环境中抛出数据库节点异常

Sitecore is throwing a database node exception in the CD environment

WFFM 在 CM 环境中工作得很好。

在CD环境下,我在我的Website文件夹中解压了Web Forms for Marketers CD 8.2 rev. 161129.zip里面的内容。然后我:

  1. 在所有 CD 服务器上,在 \Website\App_Config\Include\Sitecore.Forms.Config 文件中,删除或禁用以下部分。 <hook type="Sitecore.Form.Core.WffmActionHook, Sitecore.Forms.Core"/>
  2. 也删除了 <event name="wffm:action:remote"> 部分。
  3. 我添加了 <setting name="WFM.IsRemoteActions" value="true" /><setting name="WFM.IsRemoteActions" value="true" />

在我的 connectionstrings.config 中,没有 master 的连接名称。我们已决定删除 CD 环境中对 master 的所有引用。

在 showconfig 文件中,我看到 <setting name="WFM.MasterDatabase" value="web" patch:source="Sitecore.Forms.config" />

我将整个网站从 CM 发布到 CD。当我在 CD 环境中查看页面时,出现以下异常:

Exception: System.InvalidOperationException
Message: Could not find configuration node: databases/database[@id='master']
Source: Sitecore.Kernel
   at Sitecore.Diagnostics.Assert.IsTrue(Boolean condition, String format, Object[] args)
   at Sitecore.Configuration.DefaultFactory.GetConfigNode(String xpath, Boolean assert)
   at Sitecore.Configuration.DefaultFactory.CreateObject(String configPath, String[] parameters, Boolean assert)
   at Sitecore.Configuration.DefaultFactory.GetDatabase(String name, Boolean assert)
   at Sitecore.Configuration.DefaultFactory.GetDatabase(String name)
   at Sitecore.Marketing.Definitions.Goals.Data.ItemDb.GoalDefinitionItemRepository..ctor(String databaseName, Boolean assumeActive, IDefinitionRecord
Mapper`1 mapper)
   at Sitecore.Marketing.Definitions.Goals.Data.ItemDb.GoalDefinitionItemRepository..ctor(String databaseName, Boolean assumeActive)

在此post之后,我截断了核心数据库中的links table,然后重新构建了它。还是不走运!

我做错了什么?

点击 /admin/showconfig.aspx 或使用 SIM 进行配置 xml 并查找 "master"。你不应该有任何。无论它在哪里,检查补丁源并为该文件编写补丁。也许把它放在 Switchtomaster.config.

在与 Sitecore 支持人员反复沟通后,他们注意到此问题与 WFFM 无关,而是与无法加载的目标定义有关。

Sitecore 的回应

The issue that SwitchMasterToWeb config leaves a reference to the Master database in node was registered as a bug in our bug tracking system. To track the future status of this bug report, please use the reference number 98770

重要

Make sure the following changes are made ONLY in the CD environment(s).

打开\App_Config\Include\Sitecore.Marketing.config,然后更改以下内容: 从 <itemRepositoriesDatabase>master</itemRepositoriesDatabase><itemRepositoriesDatabase>web</itemRepositoriesDatabase>

这样做会导致 Sitecore.ContentSearch.Exceptions.IndexNotFoundException 异常。堆栈跟踪将包括:

Exception: Sitecore.ContentSearch.Exceptions.IndexNotFoundException
Message: Index sitecore_marketingdefinitions_master was not found
Source: Sitecore.ContentSearch
   at Sitecore.ContentSearch.ContentSearchManager.GetIndex(String name)
   at Sitecore.Marketing.Search.BaseDefinitionSearchProvider`2..ctor(String indexName)

根据 this articlesitecore_marketingdefinitions_master 索引不应出现在 CD 上。要解决此问题,请打开 \App_Config\Include\Sitecore.Marketing.Search.config,然后更改以下内容: 从 <searchIndexName>sitecore_marketingdefinitions_master</searchIndexName><searchIndexName>sitecore_marketingdefinitions_web</searchIndexName>