ASP.NET 構成ファイル(Web.config/Machine.config)

構成ファイル(Web.config/Machine.config)

構成ファイル概要

・共通パラメータ
・アクセス制御(認証とユーザ管理)
・エラーページ
・文字コード
等アプリケーション共通で参照可能な値を記述するXML形式のファイル
2種類あり、
Machine.config
.NetFramework共通(サイト全体)の構成に使用。
Web.config
アプリケーションの構成に使用。
アプリケーション内で複数の構成を保持でき、
ページ毎に適用する構成を変更できる。

Webフォーム記述例

※構成ファイル
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="CompanyName" value="米良太事務所"/>
  </appSettings>
</configuration>

※aspxファイルから参照
<asp:Literal runat="server" Mode="Encode" Text="<%$ AppSettings:CompanyName %>"></asp:Literal>
⇒米良太事務所
※プログラムから参照
protected void Page_Load(object sender, EventArgs e)
{
  var a = System.Configuration.ConfigurationManager.AppSettings["CompanyName"];
  ⇒ a : 米良太事務所
}

MVC記述例

※構成ファイル
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
    <add key="CompanyName" value="米良太事務所"/>
  </appSettings>
</configuration>

※コントローラー
public class IndexController : Controller
{
  public ActionResult Index()
  {
    ViewBag.a = System.Configuration.ConfigurationManager.AppSettings["CompanyName"];
    return View();
  }
}
※ビュー
<body>
  <div>
    @ViewBag.a
    ⇒ 米良太事務所
  </div>
</body>

<pages>要素

ページの挙動設定
<pages
  buffer="True"
  validateRequest="true" >
  <controls>…</controls>
  <namespaces>…</namespaces>
  <tagMapping>…</tagMapping>

</pages>

buffer属性:サーバーのバッファー使用設定

サーバーのメモリ(バッファー)に処理結果を保持するか否か?の設定
Trueにすると保持されレスポンスが早くなる。
デフォルト:True

validateRequest属性:検証設定

入力データを検証するか否か?の設定
Trueの場合、「<」「>」等の特殊文字がエラーを発生させるので安全。
独自でエスケープ処理等を記述する場合にのみFalseにする。
(「JavaScriptインジェクション① 従来型脆弱性対応(エスケープ処理等)」参照)
デフォルト:True

<system.web>要素

<glovalization>要素:言語設定

既定のカルチャ(地域)を定義する。
(カルチャを利用した多言語対応については「ASP.NET 多言語対応」参照)

<system.web>
  ~

  <glovalization
    requestEncoding="UTF-8"
    responseEncoding="UTF-8"
    culture="ja-JP"
    uiCulture="ja-JP" />
  
</system.web>

<sessionState>要素:セッション情報設定

セッション情報の保存場所・方法
<system.web>
 <sessionState
  mode="~"
  stateConnectionString="tcpip=~:42424"
  timeout="60"
  compressionEnabled="true"
  cookieless="~"
/>
</system.web>
ソース上でのSession操作については「ASP.NET Webフォーム 組み込みオブジェクト」参照

セッション情報の保存場所
mode="~"
StateServer:サーバー上の「StateSeverサービス」(オススメ)
stateConnectionString設定が更に必要。ポート番号:42424は固定

mode="StateSever"
stateConnectionString="tcpip=192.168.0.1:42424"
InProc:サーバーのメモリ上に格納(デフォルト)

mode="InProc"
Off:セッション無効

mode="Off"
SQLServer:SQLServerに保存

mode="SQLServer"

有効期限(デフォルト:20分)
timeout="60"

セッション情報の圧縮
compressionEnabled="true"

ユーザーを識別するセッションIDの受け渡し方法
cookieless="~"
UseCookies:常にクッキーを使用(安全)

cookieless="UseCookies"
UseUri:常にURLを使用(開発時用)

cookieless="UseUri"
AutoDetect/UseDeviceProfile:Cookiesを使用可能なら使用・・・と自動判別

cookieless="AutoDetect"
cookieless="UseDeviceProfile"

<trace要素>

デバッグ用設定
ASP.NET Webフォーム Traceオブジェクト/設定方法」参照

<httpCookies>要素

クッキー操作
<configuration>
  <system.web>

   <httpCookies
    ※HTTPプロトコル経由でのみアクセスできる
     (古いブラウザでは非対応)
    httpOnlyCookies="true"
    ※SSL通信のみを許可する
    requireSSL="false"
    ※クッキーが有効になるドメイン/フォルダを設定
    Domain="https://office-yone.com/"/>
  </system.web>
</configuration>

クッキー値設定は「ASP.NET Webフォーム Responseオブジェクト/クッキー操作」参照
クッキー値取得は「ASP.NET Webフォーム Requestオブジェクト/クッキーの取得」参照

<compilation>要素

デバッグ可否
<system.web>
  <compilation debug="true" />
</system.web>

<caching>要素

キャッシュの設定をページ単位でなくアプリケーション単位で適用する。
(ページ単位のキャッシュ設定は「ASP.NET Webフォーム キャッシュ」参照)
<caching>
 <outputCacheSettings>
  <outputCacheProfiles>
   <add name="MyCache" enabled="true" duration="120" varyByParam="*">
  </outputCacheProfiles>
 </outputCacheSettings>
<caching>
※~.aspx
<%@ OutputCache CacheProfile="MyCache" %>