[ASP.NET] ざっくりとappSettings

ASP.NETでアプリケーションの設定情報の保存、呼び出し等をしたい場合は、appSettingsを使う。
これには、ファイルパス、WebサービスのULR、iniファイル等の各種設定情報などを格納する。

簡単な使い方

まず、何でもないサイトにweb.configファイルを配置する。
あれば、それでいいが、なければ、[新しい項目の追加]で[Web構成ファイル]を選ぶ。
もしくは、[Webサイト]メニューの[ASP.NET構成]を使う。

すると、web.configファイルの中に、自動でappSettings項目ができていると思う。
無い場合は、下記のように書く。

<?xml version="1.0"?>
<configuration>
  <appSettings>
  </appSettings>
</configuratio>

この<appSettings>項目が、アプリケーション特有の設定情報等を記述する部分になる。

設定は、addで書く。

<appSettings>
 <add key="title" value="TestPage" />
 <add key="log_path" value="/common/log/" />
</appSettings>

読みだす時は、下記のような感じ。

[VB.NET]

Me.message = System.Configuration.ConfigurationManager.AppSettings("title")

基本的な使い方は以上。

 

別ファイルにしてみる

このファイルを別にすることができる。
web.configを共通にして、別ファイルで設定を上書きし、チームで作る際の個々の開発環境で使ったり、開発環境と本番環境を分けたりする。
下記の場合、別ファイルをappsettings.configとした場合の例

web.config

<?xml version="1.0"?>
<configuration>
  <appSettings file="appsettings.config">
  	<add key="title" value="TestPage" />
  	<add key="log_path" value="/common/log/" />
  </appSettings>
</configuratio>

appsettings.config

<?xml version="1.0"?>
<appSettings>
  <add key="log_path" value="/gomocool/log/" />
  <add key="debug" value="true" />
</appSettings>

読み込まれるファイルのルートは<appSettings>なことに注意。

ちなみに、appsettings.configの<appSettings>にfileでさらに別ファイル読み込みは、エラーになる。
多分、読み込んだ先から読み込むのはできない仕様なのかな?
<appSettings file=”appsettings2.config”>
このように、上記のappsettings.configに書いたらエラーになった。

 

clearとremove

あまり使わないかもしれいないが、addの他にremoveとclearがある。
これは、addの代わりにremoveを使うと、設定情報を追加でも上書きでもなく、消すことが可能。

<remove key=”log_path”/>

clearは、設定情報をすべて消す。

<clear/>

 

 

継承

設定情報は継承される。
上位のほうで設定した情報は継承されます。
つまり、Managerというディレクトリをあらたに作り、そこにDefault.aspxをあらたに置いた場合、
Manager以下すべてのデータ親のweb.configで設定した情報を引き継ぎます。
なので、設定ファイルがなくてもManager以下でもtilteからTestPageと取れます。
そして、この継承された情報は下位のディレクトリで上書き、削除等が可能です。
Manager直下にweb.configをあらたなに置き、<clear/>とするとすべて消えますし、addとし上書き、removeで個別に削除が可能。

appsettings_test

 

参考:

http://msdn.microsoft.com/ja-jp/library/ms228154%28v=vs.100%29.aspx

http://msdn.microsoft.com/ja-jp/library/ms178685%28v=vs.100%29.aspx#conflicts_between_settings_on_virtual_and_physical_paths

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>