我在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)
我已经阅读过一些关于类似错误的文章,但我还没有添加任何我知道的新词典项目,所以我不知道从哪里开始。有人可以给我一些建议吗?
答案 0 :(得分:2)
当两个线程同时尝试将条目添加到非线程安全的字典时,就会发生这种情况。
如果您能够修改引发错误的代码,我建议使用System.Collections.Concurrent.ConcurrentDictionary而不是System.Collections.Dictionary。