ASP.NETで使うweb.configファイルを作成する方法

web.configファイルは、ASP.NETの構成上で複数存在する設定ファイルの1つです。ファイル毎に設定の優先順位が異なり、同じ属性を持つものがあった場合には、優先順位の高いconfigファイルの設定が適用されます。web.configは他のconfigファイルよりも優先度が高く、Webアクセス関連の設定を中心に記述するものです。
- SE
- web.configファイルの中身はどのような設定を記述するべきなんですか?
- PL
- リダイレクトや認証設定などのWebアクセス関連のものが主ですね。記述例を見ていきましょう。
web.configファイルの概要
web.configファイルは、XML形式で書かれている設定ファイルで、ASP.NETでWebページに表示する際の設定内容が記述されています。カスタム設定も柔軟に行うことができるので、やり方次第で利便性の高い使い方が可能です。
また、このファイルはASP.NETのルートディレクトリ配下においておく必要があります。主な使い方は特定のURLにアクセスした際に、認証ページなどにリダイレクトする設定や、ファイルに設定した定数を取得して利用するといったことが多いかと思います。
web.configファイルを作成する方法
ASP.NETでweb.configファイルの中身を作成する場合には、configurationタグとsystem.webタグが最低限必要です。これに加えて、system.webタグ以下に各種設定を追加していくことになります。
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web> ※ここに各種設定を追加 </system.web> </configuration> |
次の設定では、localhostのページにアクセスした場合に、test.htmlのページにリダイレクトします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> </system.web> <system.webServer> <rewrite> <rewriteMaps> <rewriteMap name="StaticRedirects"> <add key="/webconfig_redirect.html" value="/test.html" /> </rewriteMap> </rewriteMaps> <rules> <rule name="Redirect Rule" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{StaticRedirects:{REQUEST_URI}}" pattern="(.+)" /> </conditions> <action type="Redirect" url="{C:1}" appendQueryString="False" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration> |
実行結果
独自の共通設定値を設ける場合には、タグを使ってkeyとvalueを設定します。
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <configuration> <appSettings> <add key="test_key" value="TEST" /> </appSettings> </configuration> |
読取り側(aspx)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<%@ Page Language="C#" %> <%@ Import Namespace="System" %> <%@ Import Namespace="System.Collections.Generic" %> <%@ Import Namespace="System.Linq" %> <%@ Import Namespace="System.Web" %> <%@ Import Namespace="System.Web.UI" %> <%@ Import Namespace="System.Web.UI.WebControls" %> <%@ Import Namespace="System.Configuration" %> <script runat="server"> protected void Page_Load(Object source, EventArgs e) { string value = ConfigurationManager.AppSettings["test_key"]; Label1.Text = value; } </script> <HTML><BODY> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text=""/> </div> </form> </BODY></HTML> |
実行結果
- SE
- web.configって、隠れたところでWebアクセスの挙動を制御しているんですね。
- PL
- Webアクセスの共通設定を埋め込んでおくことができますからね。使いこなせれば便利ですよ。
web.configを上手く使って共通設定を制御する
認証が必要なページ構成にする場合や、ページ全体における定数の設定などを制御する場合には、各ページファイルに処理を記述するよりもweb.configに記述する方がスマートになり、間違いや修正が必要になった時の変更も楽になります。Webアクセス関連の共通設定はなるべくweb.configに記述して利用するのが良いでしょう。