読者です 読者をやめる 読者になる 読者になる

clock-up-blog

go-mi-tech

(ASP.NET MVC) Web.config に書かれた connectionStrings 情報を C# で取得する

ASP.NET C#

Web.config 例

以下のように定義された connectionStrings 内の情報を C# コードで読み取る。

  ....
  <connectionStrings>
    <add name="DefaultConnection"
         connectionString="Data Source=(LocalDb)\.;....;Integrated Security=True"
         providerName="System.Data.SqlClient" />
    <add name="AzureConnection" 
         connectionString="Server=tcp:xxx.database.windows.net,1433;....Connection Timeout=30;"
         providerName="System.Data.SqlClient" />
  </connectionStrings>
  ....

connectionStrings 内の全情報を列挙する

C# コード

WebConfigurationManager.ConnectionStrings を利用する。

using System.Configuration;
using System.Diagnostics;
using System.Web.Configuration;

foreach (ConnectionStringSettings item in WebConfigurationManager.ConnectionStrings)
{
    if (item.ElementInformation.Source == null) continue;
    Debug.WriteLine("-----------------------------------");
    Debug.WriteLine(item.Name);
    Debug.WriteLine(item.ProviderName);
    Debug.WriteLine(item.ConnectionString);
}

WebConfigurationManager.ConnectionStrings 内には実は Web.config で定義した以外の情報も含まれるので、Web.config に書かれた情報だけを列挙したい場合は ConnectionStringSettings.ElementInformation.Source が null かどうかチェックすると良い。ここに値が入っていれば Web.config (またはそれ以外の config)で定義された情報だということが分かる。

実行結果

-----------------------------------
DefaultConnection
System.Data.SqlClient
Data Source=(LocalDb)\.;....;Integrated Security=True
-----------------------------------
AzureConnection
System.Data.SqlClient
Server=tcp:xxx.database.windows.net,1433;....Connection Timeout=30;

Web.config に定義されている connectionStrings のそのままの情報を取得できた。

connectionStrings 内の接続情報を名前指定で取得する

名前指定で接続情報をひとつ取得する。今回は「DefaultConnection」の情報を取得してみる。

C# コード

using System.Configuration;
using System.Diagnostics;
using System.Web.Configuration;

ConnectionStringSettings item =
    WebConfigurationManager.ConnectionStrings["DefaultConnection"];
Debug.WriteLine(item.Name);
Debug.WriteLine(item.ProviderName);
Debug.WriteLine(item.ConnectionString);

実行結果

DefaultConnection
System.Data.SqlClient
Data Source=(LocalDb)\.;....;Integrated Security=True

Web.config に定義されている DefaultConnection の接続情報が取得できた。

告知

ASP.NET MVC 関連のブログ記事は随時以下のサイトに移行していく予定です。

});