刚刚开始获得" System.ArgumentException:已经添加了具有相同密钥的项目。"使用以下堆栈跟踪。
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)
我所做的只是安装和更新Extensions并回收应用程序池。它出现在不同的页面上,我有一个自定义模块,上面有一个搜索表单和一些DevExpress组件。
DNN版本是7.3.2
亲切的问候
中的错误答案 0 :(得分:0)
我认为你看到一个竞争条件,其中两个线程试图访问UserInfo
的Social
属性:
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];
}
}
发生错误的唯一方法是两个线程检查门户网站ID密钥是否存在,并且两个线程都试图同时将密钥添加到字典中。
Social
属性在许多地方被调用(根据IL7在v7.2.2中有14个),因此很难确定问题可能来自何处;如果您注意到只有自定义模块出现问题,您可能需要调查可能调用此代码的方法