2016-11-10 31 views
1

嘗試通過ConnectionCtrings["MyDB"].connectionstring連接到數據庫時,出現空引用異常。讀取連接字符串的空錯誤

這是在using語句中,它與我在其他許多項目中使用的代碼相同,但它始終告訴我空引用,並且我不知道爲什麼。

命名的連接字符串在同一個項目中的web.config中正確命名,所以我不希望存在權限問題。

我錯過了什麼?

編輯: 我已經看到了建議的答案,通過將字符串放入Web.Config(這是連接字符串所在的位置)來解決這些問題。

代碼: 的ConnectionString在Web.config中

<connectionStrings> 
    <add name="MyDB" connectionString="Data Source=192....; Initial Catalog=ProjectDb; Integrated Security=false; User Id=user; Password=password;" providerName="System.Data.SqlClient" /> 
</connectionStrings> 

功能訪問DB

public static Company RetrieveCompany(int id) 
{ 
    var cmp = new Company(); 
    try 
    { 
     using (var con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString)) 
     { 
      con.Open(); 
      using (var cmd = new SqlCommand("RetreiveEmailProc", con)) 
      { 
       cmd.CommandType = CommandType.StoredProcedure; 
       cmd.Parameters.AddWithValue("@companyId", id); 

       SqlDataReader sdr = cmd.ExecuteReader(); 
       while (sdr.Read()) 
       { // code omitted } 
      }   

     } 
    } 
    catch(Exception ex) 
    { 

    } 

    return cmp; 
} 
+0

請參閱http://stackoverflow.com/questions/11830297/nullreference-at-connectionstring – Marusyk

+0

該問題與NRE無關,但缺少連接字符串。重新開放。 –

回答

1

我認爲這是有關您在使用ConfigurationManager代替WebConfigurationManager來。您的代碼可能位於另一個不同的文件夾中,並且ConfigurationManager無法處理該繼承問題。

+0

感謝您的建議,不幸的是,它使用WebConfigurationManager給出了相同的錯誤。 – PurpleSmurph

+0

你可以設置一個斷點並查看'ConfigurationManager.ConnectionStrings'中的內容嗎? –

+0

我已經完成了 - 我在找什麼?當我懸停在WebConfigurationManager上時,我得到計數​​2,我認爲這是錯誤的,當然應該只有一個? – PurpleSmurph