2017-03-09 88 views
-1

我正在使用BlogEngine为我工作的公司开发定制的博客。在此之前,一切似乎都工作正常,但我现在正在每次尝试运行整个项目时抛出异常。项目已被添加。键入字典:'显示名'键添加:'显示名'

类型“System.ArgumentException”的异常出现在mscorlib.dll的 但在用户代码的其他信息没有处理: 项目已添加。重点在词典:“显示名称”键 正在补充说:“显示名称”

这是的代码段抛出异常:

public override AuthorProfile SelectProfile(string id) 
    { 
     var dic = new StringDictionary(); 
     var profile = new AuthorProfile(id); 

     // Retrieve Profile data from Db 

     using (var conn = this.CreateConnection()) 
     { 
      if (conn.HasConnection) 
      { 
       if (Blog.CurrentInstance.IsSiteAggregation) 
       { 
        using (var cmd = conn.CreateTextCommand($"SELECT SettingName, SettingValue FROM {tablePrefix}Profiles WHERE UserName = {parmPrefix}name")) 
        { 
         cmd.Parameters.Add(conn.CreateParameter(FormatParamName("name"), id)); 

         using (var rdr = cmd.ExecuteReader()) 
         { 
          while (rdr.Read()) 
          { 
           dic.Add(rdr.GetString(0), rdr.GetString(1)); 
          } 
         } 
        } 
       } 
       else 
       { 
        using (var cmd = conn.CreateTextCommand(string.Format("SELECT SettingName, SettingValue FROM {0}Profiles WHERE BlogID = {1}blogid AND UserName = {1}name", this.tablePrefix, this.parmPrefix))) 
        { 
         cmd.Parameters.Add(conn.CreateParameter(FormatParamName("blogid"), Blog.CurrentInstance.Id.ToString())); 
         cmd.Parameters.Add(conn.CreateParameter(FormatParamName("name"), id)); 

         using (var rdr = cmd.ExecuteReader()) 
         { 
          while (rdr.Read()) 
          { 
           dic.Add(rdr.GetString(0), rdr.GetString(1));**[* EXCEPTION IS THROWN AT THIS LINE]** 
          } 
         } 
        } 
       } 
      } 
     } 

请,我该如何解决这个问题?

+0

错误消息是不言自明的前面添加if条款! *项目已添加*因此,您应该在插入新密钥之前进行检查。 'if(dic.ConatinsKey(rdr.GetString(0)))' –

回答

0

dic.Add()

if (!dic.ConatinsKey(rdr.GetString(0))) 
+0

谢谢。这工作。还要在名为Profles的数据库表中追踪问题。原来在配置文件中有重复的 –