2016-11-10 24 views
1

ConnectionCtrings["MyDB"].connectionstringでデータベースに接続しようとすると、null参照例外が発生します。接続文字列を読み取るときにNullエラーが発生する

これはusingステートメントにあり、他の多くのプロジェクトで使用しているのと同じコードですが、null参照を続けていますが、理由はわかりません。

名前が付けられた接続文字列は、同じプロジェクト内のweb.configに正しく名前が付けられているため、権限の問題があるとは思われません。

私は何が欠けていますか?

編集: 私は提案された答えを見ましたが、これは接続文字列があるWeb.Configに文字列を入れることで解決します。

コード:Web.configファイル

で のConnectionString
<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を使用して、あなたに関連していると思います。あなたのコードが異なるweb.configを持つ別のフォルダにあり、ConfigurationManagerがその継承の問題を処理できない可能性があります。

+0

提案していただきありがとうございます。残念ながら、WebConfigurationManagerを使用して同じエラーが発生しました。 – PurpleSmurph

+0

ブレークポイントを設定し、 'ConfigurationManager.ConnectionStrings'にあるものを見ることができますか? –

+0

私はやった - 私は何を探していますか?私がWebConfigurationManager上にマウスを置くと、私はカウント2を取得します。私は間違っていると思いますが、確かに1つしかないはずです。 – PurpleSmurph

関連する問題