マイクロソフト株式会社 デベロッパーマーケティング本部
デベロッパーエバンジェリスト 近藤 和彦

最終更新日 2004 年 6 月 2 日

このコンテンツのポイント
  • Web.config を利用したアプリケーション設定情報の格納と取得方法を理解する。
  • アプリケーション構成情報を再コンパイルせずに変更する。



今回紹介するコード


<WebForm1.aspx.vb>

Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
                                                                  Handles Button1.Click
        Dim emailAddress As String
        emailAddress = System.Configuration.ConfigurationSettings.AppSettings("Email")
        TextBox1.Text = emailAddress
End Sub
 

<Web.config>

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Email" value="kondo@example.com" />
  </appSettings>
  <system.web>
    <!-- その他 設定情報 -->
  </system.web>
</configuration>

 

目次
はじめに
作成するアプリケーションの概要
アプリケーションのデザイン
アプリケーション設定情報の格納
アプリケーション設定情報の取得
動作と解説
おわりに

Visual C# .NET の内容はこちらに掲載しています。
10 行でズバリ !! アプリケーション設定情報の格納と取得 (C#)


はじめに

Web アプリケーションの設定情報の中には、実行環境ごとに値が異なるものや、運用中に変更する必要があるものも考えられます。その際、その都度ソースコードに定義された値を修正し、再コンパイルするというのは、保守・運用にかかる手間やコストがかかります。
ASP.NET では、このような変更が予想されるアプリケーションの設定情報を柔軟に変更するための仕組みを持っています。
ここでは、その具体的な方法についてサンプル アプリケーションを通じて解説します。
なお、Web アプリケーションの基本的な開発方法についての説明は割愛しています。まず初めに「 10 行でズバリ !! ASP.NET Web フォームによる Web アプリケーション開発 (VB.NET)」をご覧ください。

 

作成するアプリケーションの概要

ここでは、例として、動的に変更する必要がある Email アドレスを、ソースコードに直接記述せずに Web.config に定義します。Web アプリケーション側では、ボタンをクリックしたとき、現在設定されている Email アドレスをテキストボックスに表示します。

 

アプリケーションのデザイン

Visual Studio .NET 2003 を起動して、新規にプロジェクトを作成します。ここでは、[Visual Basic プロジェクト]で、[ASP.NET Webアプリケーション] テンプレートを使用します。
WebForm1.aspx ファイルを開き、ツールボックスの [Web フォーム] コントロールの中から、TextBox コントロールと、Button コントロールを画面に配置します。


図 1. 完成した画面

 

アプリケーション設定情報の格納

次に Web.config ファイルを開き、<system.web> セクションの上の行に、以下の赤字で書かれているコードを追加します。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Email" value="kondo@example.com" />
  </appSettings>
  <system.web>
    ...
  </system.web>
</configuration>

<appSettings> セクションには、Web アプリケーションで使用する任意の設定情報を格納することができます。
<add> 要素で、アプリケーション設定情報を追加することができ、key 属性にアプリケーションで識別する一意の名前を、value 属性にその値を指定します。
この例では、"Email" という識別名と、その値として "kondo@example.com" を設定しています。


図 2. Web.config の定義例

 

アプリケーション設定情報の取得

ボタンをクリックしたときに、Web.config に定義された Email アドレスを取得し、テキスト ボックスにその値を表示するようにプログラムします。
ボタンクリック時のイベントに以下のコードを記述します。

Visual Basic
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
                                                                  Handles Button1.Click
        Dim emailAddress As String
        emailAddress = System.Configuration.ConfigurationSettings.AppSettings("Email")
        TextBox1.Text = emailAddress
End Sub
 

System.Configuration.ConfigurationSettings クラスの AppSettings プロパティには、<appSettings> セクションで定義したアプリケーション設定情報が格納されています。
AppSettings のパラメータに <add> 要素の key 属性で指定した識別名 (例では "Email") を指定すると、value 属性で指定した値 (例では "kondo@example.com") を取得することができます。

 

動作と解説

作成したアプリケーションをコンパイルし、実行します。今回は、デバッグ実行 ([F5] キー) を使用せず、ブラウザを起動して直接URL を指定するか、または [デバッグ] メニューから [デバッグなしで開始] をクリックします。
ボタンをクリックすると、テキストボックスに、Web.config に設定した値 (例では "kondo@example.com") が表示されることが確認できます。


図 3. アプリケーションを実行しているところ

それでは、次にこの設定情報を変更してみたいと思います。Visual Studio .NET より Web.config に定義した設定情報を別の値 (例では、"obara@example.com") に変更してください。
再度ボタンをクリックすると、テキストボックスに表示された Email アドレスが変更されていることが確認できます。


図 4. アプリケーション設定情報の変更後

アプリケーションの設定情報をソースコードに直接記述した場合にはアプリケーションの再コンパイルが必要となりましたが、このように、Web.config の <appSettings> セクションに定義した場合、再コンパイルなしでアプリケーション設定情報を変更することが可能となります。

 

おわりに

このように、システムの環境ごとに異なる環境設定値や、運用中に変更が予想される設定情報を、ソースコードに直接記述せず Web.config に定義することで、Web アプリケーションの再コンパイルを必要とせずに動的に変更することが可能となります。
この結果、Web アプリケーションの保守や運用にかかる手間やコストを軽減することができます。
例えば、データベースの接続文字列についても、この Web.config に設定することが可能です。ただし、パスワードのように機密性の高い情報を設定する場合には、値を直接定義せず、暗号化して格納することを推奨します。


Code Recipe .NET Framework デベロッパー センター

ページのトップへ