2014-11-12 3 views
2

только что начал получать «System.ArgumentException: элемент с тем же ключом уже добавлен». со следующей трассировкой стека.DotNetNuke Exception в DotNetNuke.Entities.Users.UserInfo.get_Social()

System.ArgumentException: An item with the same key has already been added 
    at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add) 
    at DotNetNuke.Entities.Users.UserInfo.get_Social() 
    at DotNetNuke.Entities.Users.UserInfo.get_Roles() 
    at DotNetNuke.Entities.Users.UserInfo.IsInRole(String role) 
    at DotNetNuke.HttpModules.Membership.MembershipModule.AuthenticateRequest(HttpContextBase context, Boolean allowUnknownExtensinons) 
    at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

Все, что я делал, это установка и обновление расширений и утилизация пула приложений. Он появляется на разных страницах, где у меня есть настраиваемый модуль, на котором есть форма поиска и некоторые компоненты DevExpress.

DNN версии 7.3.2

С наилучшими пожеланиями

UPDATE: Кажется, ошибка в DNN https://dnntracker.atlassian.net/browse/DNN-6990

+0

Вы нашли решение? У меня такая же проблема – luisluix

+0

нет, я этого не делал. Но это происходит только тогда, когда приложение откладывается пару раз, а затем останавливается. Это ничего не сломает – spankmaster79

ответ

0

Я думаю, что вы видите состояние гонки, где два потока пытаются для доступа к объекту SocialUserInfo:

public UserSocial Social 
{ 
    get 
    { 
     if (this._social == null) 
     { 
      this._social = new Dictionary<int, UserSocial>(); 
     } 
     if (!this._social.ContainsKey(this.PortalID)) 
     { 
      this._social.Add(this.PortalID, new UserSocial(this)); 
     } 
     return this._social[this.PortalID]; 
    } 
} 

Единственный способ для возникновения ошибки - это два потока для проверки наличия ключа идентификатора портала и попытки одновременно добавлять ключ в словарь.

Свойство Social вызывается во многих местах (14 согласно ILSpy в v7.2.2), поэтому трудно определить, где может возникнуть проблема; если вы заметили, что проблема возникает только с вашим настраиваемым модулем, вы можете изучить методы, которые могут называть этот код.