随机执行错误。 System.ArgumentException:已添加具有相同键的项

时间:2016-01-26 20:28:53

标签: c# asp.net

我在C#网站上工作,我刚开始在上周末收到一些随机错误。该错误是从网站上的随机页面生成的,当然,几乎没有任何信息可以继续。这是错误:

System.ArgumentException: An item with the same key has already been added.
  at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
  at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
  at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
  at System.Collections.ObjectModel.KeyedCollection`2.AddKey(TKey key, TItem item)
  at System.Collections.ObjectModel.KeyedCollection`2.InsertItem(Int32 index, TItem item)
  at System.Collections.ObjectModel.Collection`1.Add(T item)
  at CommerceBuilder.Catalog.DefaultUrlRewriter.InitializeCache()
  at CommerceBuilder.Catalog.DefaultUrlRewriter.a(String A_0)
  at CommerceBuilder.Catalog.DefaultUrlRewriter.RewriteUrl(String sourceUrl)
  at CommerceBuilder.Services.b.c(Object A_0, EventArgs A_1)
  at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
  at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

我已经阅读过一些关于类似错误的文章,但我还没有添加任何我知道的新词典项目,所以我不知道从哪里开始。有人可以给我一些建议吗?

1 个答案:

答案 0 :(得分:2)

当两个线程同时尝试将条目添加到非线程安全的字典时,就会发生这种情况。

如果您能够修改引发错误的代码,我建议使用System.Collections.Concurrent.ConcurrentDictionary而不是System.Collections.Dictionary。