Проверьте ответ Ким в этой теме: http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/172f4f77-601e-4b4f-8d98-582f8f62a98e
Привет Мэтт,
В .NET 2.0 эта ошибка почти всегда вызвана тем, что несколько потоков одновременно изменяют Hashtable. Исправление заключается в вставке блокировок перед изменением Hashtable, поскольку Hashtable не поддерживает многопотоковую запись. Другим возможным решением является работа с синхронизированной оболочкой через Hashtable.Synchronized, однако мы рекомендуем первую для более точного управления.
Так что это исправление, если ваш код изменяет Hashtable. На основании предоставленной вами информации, я думаю, что это не так. Вы упомянули, что вы столкнулись с этой ошибкой на веб-сайте ASP 2.0, так что это может быть вызвано вызывающим абонентом Hashtable. Например, если стек вызовов выглядит примерно так, обратите внимание, что это ошибка, исправленная в последней версии.
Спасибо,
Ким
Трассировка стека: в System.Collections.Hashtable.Insert (ключ объекта, значение объекта n, логическое добавление)
в System.Collections.Hashtable.set_Item (ключ объекта, значение объекта)
в System.ComponentModel.TypeDescriptor.CheckDefaultProvider (Type type)
at System.ComponentModel.TypeDescriptor.NodeFor (тип, логический тип createDelegator)
в System.ComponentModel.TypeDescriptor.GetDescriptor (Тип тип, String typeName)
в System.ComponentModel.TypeDescriptor.GetAttributes (Type componentType)
в System.Web.UI.ThemeableAttribute.IsTypeThemeable (Тип тип)
на System.Web.UI.Control.ApplySkin (Страница страницы)
в System.Web.UI.Control.InitRecursive (элемент управления namingContainer)
в System.Web.UI.Control.InitRecursive (элемент управления namingContainer)
в System.Web.UI.Control.InitRecursive (элемент управления namingContainer)
в System.Web.UI.Control.InitRecursive (элемент управления namingContainer)
в System.Web.UI.Control.InitRecursive (элемент управления namingContainer)
в System.Web.UI.Page.ProcessRequestMain (логическое значение includeStagesBeforeAsyncPoint, логическое значение includeStagesAfterAsyncPoint)