已存在具有相同键的条目
An entry with the same key already exists
我正在 Umbraco 7 中构建站点。我使用的是 7。3.x 现在更新到 7.4.0。在随机的情况下,网站会崩溃,我会收到以下消息。
[ArgumentException: An entry with the same key already exists.]
System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) +52
System.Collections.Generic.SortedList`2.Add(TKey key, TValue value) +6744873
Umbraco.Core.MainDom.Register(Action install, Action release, Int32 weight) +128
Umbraco.Core.Sync.DatabaseServerMessenger.Boot() +55
Umbraco.Web.BatchedDatabaseServerMessenger.Startup() +186
Umbraco.Web.BatchedDatabaseServerMessengerStartup.ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) +63
Umbraco.Core.ApplicationEventHandler.OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) +37
Umbraco.Core.CoreBootManager.<Complete>b__a(IApplicationEventHandler x) +230
Umbraco.Core.EnumerableExtensions.ForEach(IEnumerable`1 items, Action`1 action) +141
Umbraco.Core.CoreBootManager.Complete(Action`1 afterComplete) +293
Umbraco.Web.WebBootManager.Complete(Action`1 afterComplete) +60
Umbraco.Core.UmbracoApplicationBase.StartApplication(Object sender, EventArgs e) +234
Umbraco.Core.UmbracoApplicationBase.Application_Start(Object sender, EventArgs e) +34
我已经缩小了问题范围,它与检查索引有关。在开发环境中,我只需要重建它就可以正常工作,但在测试中我们需要停止应用程序池删除检查索引并重新启动。
我也是从日志中得到的
2016-02-16 08:12:50,006 [P4656/D62/T1] INFO Umbraco.Core.DatabaseContext - CanConnect = True
2016-02-16 08:12:50,051 [P4656/D62/T1] INFO Umbraco.Core.DatabaseContext - CanConnect = True
2016-02-16 08:12:50,051 [P4656/D62/T1] INFO Umbraco.Core.DatabaseContext - CanConnect = True
2016-02-16 08:12:50,072 [P4656/D62/T1] INFO Umbraco.Core.DatabaseContext - CanConnect = True
2016-02-16 08:12:50,072 [P4656/D62/T1] ERROR Umbraco.Core.CoreBootManager - An error occurred running OnApplicationStarted for handler Umbraco.Web.BatchedDatabaseServerMessengerStartup
System.ArgumentException: An entry with the same key already exists.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.SortedList`2.Add(TKey key, TValue value)
at Umbraco.Core.MainDom.Register(Action install, Action release, Int32 weight)
at Umbraco.Core.Sync.DatabaseServerMessenger.Boot()
at Umbraco.Web.BatchedDatabaseServerMessenger.Startup()
at Umbraco.Web.BatchedDatabaseServerMessengerStartup.ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
at Umbraco.Core.ApplicationEventHandler.OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
at Umbraco.Core.CoreBootManager.<Complete>b__a(IApplicationEventHandler x)
2016-02-16 08:12:50,074 [P4656/D62/T1] ERROR Umbraco.Core.UmbracoApplicationBase - An unhandled exception occurred
System.ArgumentException: An entry with the same key already exists.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.SortedList`2.Add(TKey key, TValue value)
at Umbraco.Core.MainDom.Register(Action install, Action release, Int32 weight)
at Umbraco.Core.Sync.DatabaseServerMessenger.Boot()
at Umbraco.Web.BatchedDatabaseServerMessenger.Startup()
at Umbraco.Web.BatchedDatabaseServerMessengerStartup.ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
at Umbraco.Core.ApplicationEventHandler.OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
at Umbraco.Core.CoreBootManager.<Complete>b__a(IApplicationEventHandler x)
at Umbraco.Core.EnumerableExtensions.ForEach[TItem](IEnumerable`1 items, Action`1 action)
at Umbraco.Core.CoreBootManager.Complete(Action`1 afterComplete)
at Umbraco.Web.WebBootManager.Complete(Action`1 afterComplete)
at Umbraco.Core.UmbracoApplicationBase.StartApplication(Object sender, EventArgs e)
at Umbraco.Core.UmbracoApplicationBase.Application_Start(Object sender, EventArgs e)
我了解到这可能与重复用户有关,但数据库中不存在此类问题。
可能导致此问题的另一个问题是开发站点和测试站点共享同一个 Umbraco 数据库。我不确定这是否会导致这种冲突。
无论如何,我对这个错误感到很困惑,我们将不胜感激任何帮助,因为它真的很重要。
提前致谢,瓦西利斯
可以共享数据库,但您需要将其设置为负载平衡环境。 (缓存)
按照指南进行操作
https://our.umbraco.org/documentation/Getting-Started/Setup/Server-Setup/load-balancing/
我正在 Umbraco 7 中构建站点。我使用的是 7。3.x 现在更新到 7.4.0。在随机的情况下,网站会崩溃,我会收到以下消息。
[ArgumentException: An entry with the same key already exists.]
System.ThrowHelper.ThrowArgumentException(ExceptionResource resource) +52
System.Collections.Generic.SortedList`2.Add(TKey key, TValue value) +6744873
Umbraco.Core.MainDom.Register(Action install, Action release, Int32 weight) +128
Umbraco.Core.Sync.DatabaseServerMessenger.Boot() +55
Umbraco.Web.BatchedDatabaseServerMessenger.Startup() +186
Umbraco.Web.BatchedDatabaseServerMessengerStartup.ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) +63
Umbraco.Core.ApplicationEventHandler.OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext) +37
Umbraco.Core.CoreBootManager.<Complete>b__a(IApplicationEventHandler x) +230
Umbraco.Core.EnumerableExtensions.ForEach(IEnumerable`1 items, Action`1 action) +141
Umbraco.Core.CoreBootManager.Complete(Action`1 afterComplete) +293
Umbraco.Web.WebBootManager.Complete(Action`1 afterComplete) +60
Umbraco.Core.UmbracoApplicationBase.StartApplication(Object sender, EventArgs e) +234
Umbraco.Core.UmbracoApplicationBase.Application_Start(Object sender, EventArgs e) +34
我已经缩小了问题范围,它与检查索引有关。在开发环境中,我只需要重建它就可以正常工作,但在测试中我们需要停止应用程序池删除检查索引并重新启动。
我也是从日志中得到的
2016-02-16 08:12:50,006 [P4656/D62/T1] INFO Umbraco.Core.DatabaseContext - CanConnect = True
2016-02-16 08:12:50,051 [P4656/D62/T1] INFO Umbraco.Core.DatabaseContext - CanConnect = True
2016-02-16 08:12:50,051 [P4656/D62/T1] INFO Umbraco.Core.DatabaseContext - CanConnect = True
2016-02-16 08:12:50,072 [P4656/D62/T1] INFO Umbraco.Core.DatabaseContext - CanConnect = True
2016-02-16 08:12:50,072 [P4656/D62/T1] ERROR Umbraco.Core.CoreBootManager - An error occurred running OnApplicationStarted for handler Umbraco.Web.BatchedDatabaseServerMessengerStartup
System.ArgumentException: An entry with the same key already exists.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.SortedList`2.Add(TKey key, TValue value)
at Umbraco.Core.MainDom.Register(Action install, Action release, Int32 weight)
at Umbraco.Core.Sync.DatabaseServerMessenger.Boot()
at Umbraco.Web.BatchedDatabaseServerMessenger.Startup()
at Umbraco.Web.BatchedDatabaseServerMessengerStartup.ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
at Umbraco.Core.ApplicationEventHandler.OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
at Umbraco.Core.CoreBootManager.<Complete>b__a(IApplicationEventHandler x)
2016-02-16 08:12:50,074 [P4656/D62/T1] ERROR Umbraco.Core.UmbracoApplicationBase - An unhandled exception occurred
System.ArgumentException: An entry with the same key already exists.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.SortedList`2.Add(TKey key, TValue value)
at Umbraco.Core.MainDom.Register(Action install, Action release, Int32 weight)
at Umbraco.Core.Sync.DatabaseServerMessenger.Boot()
at Umbraco.Web.BatchedDatabaseServerMessenger.Startup()
at Umbraco.Web.BatchedDatabaseServerMessengerStartup.ApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
at Umbraco.Core.ApplicationEventHandler.OnApplicationStarted(UmbracoApplicationBase umbracoApplication, ApplicationContext applicationContext)
at Umbraco.Core.CoreBootManager.<Complete>b__a(IApplicationEventHandler x)
at Umbraco.Core.EnumerableExtensions.ForEach[TItem](IEnumerable`1 items, Action`1 action)
at Umbraco.Core.CoreBootManager.Complete(Action`1 afterComplete)
at Umbraco.Web.WebBootManager.Complete(Action`1 afterComplete)
at Umbraco.Core.UmbracoApplicationBase.StartApplication(Object sender, EventArgs e)
at Umbraco.Core.UmbracoApplicationBase.Application_Start(Object sender, EventArgs e)
我了解到这可能与重复用户有关,但数据库中不存在此类问题。
可能导致此问题的另一个问题是开发站点和测试站点共享同一个 Umbraco 数据库。我不确定这是否会导致这种冲突。
无论如何,我对这个错误感到很困惑,我们将不胜感激任何帮助,因为它真的很重要。
提前致谢,瓦西利斯
可以共享数据库,但您需要将其设置为负载平衡环境。 (缓存)
按照指南进行操作 https://our.umbraco.org/documentation/Getting-Started/Setup/Server-Setup/load-balancing/