2017-03-09 89 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的數據庫表中追蹤問題。原來在配置文件中有重複的 –