app.config(web.config)の裏にあるもの
.NET標準のアプリケーション設定ファイル、と言うと
「app(web).config(コンパイル後はxxx.exe.config)」
になるかと思います。
じゃあそのファイルを作らなかったら、
作っても自前のセクションしか使わなかったら、
どういう設定が内部で行われるのか?
今まであまり考えたことがなかったのですが
seasar-dotnetのMLで指摘を受けたのでちょっとだけ
調べてみました。
ASP.NET 構成ファイルの階層と継承
一部を抜粋します。
MSDNには上記のように書かれています。
すべての .NET Framework アプリケーションは、
systemroot\Microsoft .NET\Framework\versionNumber\CONFIG\Machine.config ファイルから
基本構成設定と既定の設定を継承します。
Machine.config ファイルは、サーバー全体の構成設定のために使用されます。
これらの設定の一部は、階層内の下位の構成ファイルでオーバーライドできません。.NET クライアント アプリケーション
(コンソール アプリケーションおよび Windows アプリケーション) は
、ApplicationName.config という構成ファイルを使用して、
継承した設定をオーバーライドします。
ASP.NET アプリケーションは、Web.config という構成ファイルを使用して、
継承した設定をオーバーライドします。
例えばapp.configには「connectionString」というDBへの接続文字列を
書くための要素があるのですが、app.configを用意しなかったり、
用意してもconnectionStringを使わなかった場合は
machine.configというファイルに書かれた設定が暗黙に使われるようです。
↓machine.configの一部
SQLServerをインストールしてconnectionStringの設定を使って
(中略)
(中略)
接続しようとすると、以下の設定を書いておいてやらないと
使い方によっては意図していないところに
つなぐことになってしまうのですが、
何故この設定が必要なのかは
このmachine.configの中身を見ると納得できます。
他にもこんな設定がありました。
恐らくここに書かれているプロバイダ以外のもの(MySQLとか)を使いたい場合は
自前でDbProviderを追加してやる必要があり、
逆にここに書かれているプロバイダを使う場合は
machine.config上の設定の影響を受けてしまう可能性があります。
他にも色々なことが記述してあり、
.NETではどんなことが標準で設定されて
どんなことを自前で用意しなければいけないのか?
という情報を垣間見ることができそうです。