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" %>