"Post condition failed" 从 8.1 升级到 8.2 时出错

"Post condition failed" error when upgrading from 8.1 to 8.2

我正在将 sitecore 从 8.1 升级到 8.2,现在分为 CD 和 CMS,但我在让 CD 工作时遇到问题,它给我以下错误。

无法找出导致问题的原因,

堆栈跟踪:

[InvalidOperationException: Post condition failed]
Sitecore.Diagnostics.Assert.ResultNotNull(T result, String message) +85 Sitecore.Configuration.DefaultFactory.GetDatabase(String name) +86 Sitecore.Configuration.DefaultFactory.GetDatabases() +121 Sitecore.Data.Managers.DefaultItemManager.Initialize() +105 (Object , Object[] ) +117 Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) +484 (Object , Object[] ) +71
Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) +484
Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain) +22
Sitecore.Nexus.Web.HttpModule.Application_Start() +259
Sitecore.Nexus.Web.HttpModule.Init(HttpApplication app) +704
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +618
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +402
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +343

[HttpException (0x80004005): Post condition failed]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +579
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +112 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +712

问题出在 DefaultFactory 及其 GetDatabases 方法上。此方法获取在 sitecore/databases/database 配置中定义的所有数据库。

看起来该配置中仍有 master 数据库,但您已经删除了它的连接字符串或与该数据库相关的一些其他配置。

如果您查看 Configure a content delivery server 指南,有删除 configuration/sitecore/databases/database 的信息(注释掉整个 master 数据库部分)。

通过在 Z.switchMasterToWeb 文件夹中启用 switchMasterToWeb.config 而不是 include 文件夹中的 switchMasterToWeb 设法解决了该问题。