<configuration>
<configuration>
</configuration>
 
 

すべての構成ファイルのルート要素です。この要素は必須です。

 
スコープ

すべて

 
属性

なし

 
<appSettings>
<appSettings>
</appSettings>
 
 

<appSettings> 要素を使用して、カスタムアプリケーション設定を「キー/値」のペアとして構成できます。次の例に示すとおり、ConfigurationSettings クラスの AppSettings プロパティを使用して、実行時にこれらの設定を取得できます。この静的な共有プロパティにアクセスする前に ConfigurationSettings クラスをインスタンス化する必要はありません。

 
スコープ

任意

 
属性

なし

 
子要素
 
  • <add>
      一致するパターンです。
  • <remove>
      一致するパターンです。
  • <clear>
      一致するパターンです。
 

次の "web.config" のセクションは、アプリケーションレベルの「キー/値」のペアを設定します。

 
<configuration>
   <appSettings>
      <add key="applicationConfigKey" value="bar"/>
   </appSettings>
</configuration>
 

次の ASP.NET ページは、先行するコードで設定された値と、machine.config レベルで設定された値を取得します。

 
<%@ Page Language="VB" %>
<html>
<head>
   <script runat="server">
      Sub Page_Load(  )
         Message1.Text &= _
            ConfigurationSettings.AppSettings("machineConfigKey")
         Message2.Text &= _
            ConfigurationSettings.AppSettings("applicationConfigKey")
      End Sub
   </script>
</head>
<body>
   <asp:label id="Message1" runat="server">Machine.Config setting: </asp:label>
   <br/>
   <asp:label id="Message2" runat="server">Web.Config setting: </asp:label>
</body>
</html>
 
メモ

例に示したように、<appSettings> 要素は、<system.web> 要素およびその子要素とは別個に使用することができます。

 

セキュリティ上の理由により、<appSettings> 要素を使用して保存するデータの種類については十分に検討してください。ASP.NET ランタイムはアプリケーションの "web.config" ファイルに対する要求または読み取りが行われないように設定されていますが、何らかの方法で Web サーバーのセキュリティが侵害された場合にはこのファイルが脆弱になります。したがって、通常は、ユーザー名やパスワード、またはユーザー名とパスワードを含む接続文字列などの機密情報は "web.config" ファイルに保存しないようにしてください。ある程度の脆弱性は残りますが、この方法より優れた代替案として、このような機密情報を "machine.config" レベルに保存します。このファイルはアプリケーションの Web 領域外にあるため、IIS に対する攻撃による脆弱性がいくらか低くなります。ただし、この情報はコンピュータ上のすべてのアプリケーションから利用できることを覚えておいてください。

 
<system.web>
<system.web>
</system.web>
 
 

"web.config" ファイルで使用されているすべての要素を格納するための要素です。

 
スコープ

すべて

 
属性

なし

 
子要素

<authentication><authorization><browserCaps><clientTarget><compilation><customErrors><globalization><httpHandlers><httpModules><httpRuntime><identity><iisFilter><machineKey><pages><processModel><securityPolicy><sessionState><trace><trust><webServices>

 
メモ

<system.web> 要素は、その子要素を使用するために必須です。

 
<authentication>
<authentication>
</authentication>
 
 

属性を示し、ASP.NET で認証オプションの構成に使用する子要素を記述します。

 
スコープ

コンピュータ、アプリケーション

 
属性
 
  • Mode
      ASP.NET で使用する認証の種類を決定します。有効な値は次のとおりです。
    • Windows (初期設定値)
        基本認証、ダイジェスト認証、統合 Windows 認証、または証明書など、IIS 認証方法によって提供される資格情報を使用して、ユーザーの要求を認証します。認証されたユーザー名、または関連するグループ名やロール名を使用して、<authorization> 要素に記述されている設定を基に、要求が許可または拒否されます。これは "machine.config" で定義されているデフォルトの認証モードです。
    • Forms
        Windows 認証を実行できない場合に、カスタム認証を実行するためのインフラストラクチャを提供します。フォーム認証が有効になっている場合、ログインしていないユーザーは、<forms> 要素の属性として指定されているログイン URL に自動的にリダイレクトされます。いったんログインすると、認証トークンとして Cookie が送信されます。Active Directory からカスタム資格情報データベースまで、デベロッパーがどのような資格情報データベースを選択していてもユーザーを認証できます。このモードでは、<forms> 子要素を含める必要があります。
    • Passport
        Microsoft Passport 認証サービスを利用します。このモードでは、<passport> 子要素を含める必要があります。
    • None
        ASP.NET レベルで認証が実行されないように指定します。要求の認証は、IIS 認証モードの 1 つを NTFS ACL (Access Control List : アクセス制御リスト) と組み合わせて行うことができます。
 
子要素

<forms><passport>

 

次の例は、構成ファイルのスコープ内にページを構成して、ASP.NET のフォームベース認証を使用します。

 
<configuration>
   <system.web>
      <authentication mode="Forms">
         <forms name="myAuthCookie"
            loginUrl="login.aspx"
            protection="All"
            timeout="30"
            path="/" />
      </authentication>
   </system.web>
</configuration>
 
メモ

必要に応じて、<location> 要素を使用してコンピュータレベルで認証を構成できます。また、この要素の allowOverride 属性を使用すると、個々のアプリケーションでこれらの設定が上書きされないように設定できます。

 

認証はかなり複雑なトピックです。ASP.NET 認証のさまざまな方法と IIS 認証との関連の詳細については、第 9 章を参照してください。

 
<forms>
<forms
 loginUrl=String
 name=String
 path=String protection="All|None|Encryption|Validation"
 timeout=Integer>
</forms>
 
 

属性および <credentials> という 1 つの子要素を示して、フォームベース認証を使用するように ASP.NET を構成します。

 
スコープ

コンピュータ、アプリケーション

 
属性
 
  • name
      認証 Cookie の名前を指定します。この属性を省略した場合、値はデフォルトの .ASPXAUTH になります。フォームベース認証を使用する複数のアプリケーションを同じサーバー上で実行している場合は、アプリケーションごとに認証 Cookie 名を設定することをお勧めします。あるアプリケーションで認証されているユーザーが、別のアプリケーションでも認証されたユーザーとして処理される危険性を最小限に抑えることができます。
  • loginUrl
      有効な認証 Cookie を持っていないユーザーに対するリダイレクト URL を指定します。認証 Cookie を持っていないユーザーがアプリケーション内のページを要求した場合、このログイン用 URL にリダイレクトされます。その後、ユーザーはログイン用ページから最初に要求したページに再びリダイレクトされます。この属性を省略した場合、値はデフォルトの login.aspx になります。
  • protection
      送信中に認証 Cookie が変更されないようにするための保護の種類を指定します。有効な値は次のとおりです。
    • All
        Cookie は、利用できる場合は Triple DES 暗号化で暗号化され、データ検証されます。データ検証は、<machineKey> 要素の設定に基づいて実行されます。All は初期設定値であり、認証 Cookie をセキュリティで保護するための推奨設定です。
    • Encryption
        Cookie に対して暗号化のみを行います。この値を設定することで Cookie の保護に伴うオーバーヘッドは減少しますが、プレーンテキスト攻撃への脆弱性は残ります。
    • None
        Cookie を保護するための暗号化と検証が無効になります。この値を設定することでフォームベース認証の使用に伴うオーバーヘッドは減少しますが、認証 Cookie は保護されません。この属性は推奨しません。
    • Validation
        検証キーが Cookie データに連結されます。このキーをチェックして、Cookie のデータが送信中に変更されていないことを確認します。
  • timeout
      認証 Cookie の有効期限を分単位で指定します。この値は変化します。有効期限の半分以上が経過した後で要求を受け取るとリセットされます。この属性は永続的な Cookie には適用されません。初期設定値は 30 です。
  • path
      認証 Cookie のパスを指定します。多くのブラウザがパスの大文字と小文字を区別して処理するため、初期設定値は円記号 (\) に設定されています。
 
子要素

<credentials>

 

<authentication> 要素の例を参照してください。

 
メモ

フォームベース認証は、<authorization> 要素と併用して、アプリケーション内のページに対する匿名ユーザーのアクセスを拒否する場合にのみ有効です。

 

フォーム認証の資格情報が奪われないように、SSL 暗号化を使用してこれらの資格情報および Cookie を保護することをお勧めします。SSL を使用できない場合、または使用を希望しない場合は、少なくともデフォルトの timeout 値を減少させて、第三者が認証 Cookie を捕捉および偽装する可能性を低くしてください。

 
<credentials>
<credentials
	passwordFormat="Clear|SHA1|MD5">
</credentials>
 
 

アプリケーションまたはコンピュータの構成ファイルに資格情報のセットを保存して、後で要求の認証に使用できるようにします。実際の資格情報の保存には <user> 子要素が使用されます。

 
スコープ

コンピュータ、アプリケーション

 
属性
 
  • passwordFormat
      パスワードを保存および照合するフォーマットを指定します。有効なオプションは、ClearSHA1、および MD5 です。
 
子要素

<user>

 

次の例は、<credentials> 要素を使用して認証対象となる 2 つのユーザーアカウントを保存します。

 
<credentials passwordFormat = "SHA1">
   <user name="foo" password="794ED3D18464BAFF93F8DED1CFD00D9A2D9FE316"/>
   <user name="bar" password="B7CDD2A2B0F05E6948E5CEED22FA9A38EB28DEC8"/>
</credentials>
 
メモ

資格情報をいったん保存すると、FormsAuthentication ヘルパークラスの静的 (共有) メソッド Authenticate を呼び出して、その資格情報で認証することができます。FormsAuthentication の静的 (共有) メソッド HashPasswordForStoringInConfigFile を使用してパスワードの MD5 ハッシュまたは SHA1 ハッシュを作成し、<user> 要素に保存することができます。<credentials> 要素を使用して資格情報を保存するときは、常にパスワードをハッシュしてください。読み取り可能なテキストでパスワードを保存すると、セキュリティ上の危険を伴う可能性があります。理論上は、構成ファイルを読み取ることはできませんが、サーバーの構成の誤りまたはセキュリティの脆弱性が原因で、このファイルが公開される可能性があります。

 
<user>

<user>

 
 

<credentials> 要素で定義された各ユーザーのユーザー名とパスワードを保存します。

 
スコープ

コンピュータ、アプリケーション

 
属性
 
  • name
      認証されるユーザー名です。
  • password
      認証されるパスワードです。
 
子要素

なし

 

<credentials> 要素の例を参照してください。

 
メモ

password 属性に保存したパスワードをハッシュするには、HashPasswordForStoringInConfigFile メソッドを常に使用してください。第 9 章の例に、プレーンテキストのパスワードの SHA1 ハッシュまたは MD5 ハッシュを作成するユーティリティページがあります。

 
<passport>

<passport redirectUrl=Url />

 
 

この要素は省略可能です。Microsoft Passport 認証プロバイダを使用しているときに、認証されていない要求のリダイレクト先となる内部 URL を構成します。この要素は、<authentication> 要素の mode 属性が Passport に設定されている場合にのみ使用してください。

 
スコープ

コンピュータ、アプリケーション

 
属性
 
  • redirectUrl
      Passport 認証トークンがない要求のリダイレクト先となるアプリケーション内の URL です。
 
子要素

なし

 

次の例は、Passport 認証用のアプリケーションを構成する "web.config" ファイルを示しています。

 
<configuration>
   <system.web>
      <authentication mode="Passport">
         <passport redirectUrl="Login.aspx"/>
      </authentication>
   </system.web>
</configuration>
 
メモ

Passport 認証の構成の詳細については、http//www.passport.com から入手可能な Passport SDK のマニュアルを参照してください。

 
<authorization>

2 つの子要素である <allow> および <deny> を指定します。これらの子要素を使用して、アプリケーションのリソースにアクセスするために使用する、ユーザー、ロール、または HTTP の動詞を構成できます。

 
スコープ

任意

 
属性

なし

 
子要素

<allow><deny>

 

次の例は、ユーザーである Mary と John に対して、HTTP の動詞を使用してアプリケーションのリソースへのアクセスを許可しますが、認証されていないユーザーに対しては POST アクセスを拒否します。

 
<configuration>
   <system.web>
      <authorization>
         <allow users="Mary, John" />
         <deny users="?" verbs="POST" />
      </authorization>
   </system.web>
</configuration>
 
メモ

<authorization> 要素で実装される認証は、URL 認証と呼ばれます。URL 認証の詳細については、第 9 章を参照してください。

 

次の 2 つのいずれかの方法で、アプリケーションの特定のファイルまたはディレクトリに対して、アプリケーションのルートの "web.config" ファイルで構成されたデフォルトとは異なる認証設定を指定できます。

 
  1. 次の例で示すように、目的の子ディレクトリの "web.config" ファイルに <authorization> 要素を追加します。
  2. 次の例で示すように、ルートの "web.config" ファイルで <location> タグを使用し、その path 属性を目的のパスに設定します。
<configuration>
	<location path="files">
		<system.web>
			<authorization>
				<deny users="?" />
			</authorization>
		</system.web>
	</location>
	<system.web>
		<!--other configuration settings -->
	</system.web>
</configuration>
 
<allow>

アプリケーションに対して認証するユーザー、ロール、および HTTP の動詞を指定します。

 
スコープ

任意

 
属性
 
  • users
      認証済みユーザー名のコンマ区切りリストです。
  • roles
      認証済みロール (NT グループ) のコンマ区切りリストです。
  • verbs
      認証済みの HTTP の動詞 (GET、HEAD、POST、または DEBUG) のコンマ区切りリストです。
 
子要素

なし

 

<authorization> 要素の例を参照してください。

 
メモ

次の 2 つのワイルドカードを使用して、特別なユーザーグループを指定できます。

 
 
  • *
      user 属性の値に使用する場合は、すべてのユーザーにアクセスが許可されます。これは、"machine.config" で定義されているデフォルトの構成設定です。
  • ?
      user 属性の値に使用する場合は、匿名ユーザーにアクセスが許可されます。このワイルドカードは、一般的には <deny> 要素と共に使用します。
 
<deny>

アプリケーションに対する認証を拒否するユーザー、ロール、および HTTP の動詞を指定します。

 
スコープ

任意

 
属性
 
  • users
      認証済みユーザー名のコンマ区切りリストです。
  • roles
      認証済みロール (NT グループ) のコンマ区切りリストです。
  • verbs
      認証済みの HTTP の動詞 (GET、HEAD、POST、または DEBUG) のコンマ区切りリストです。
 
子要素

なし

 

<authorization> 要素の例を参照してください。

 
メモ

<allow> 要素で使用されているワイルドカードは、<deny> 要素にも適用されます。認証されていない匿名ユーザーへのアクセスを拒否するには、<deny> 要素の users 属性の値を ? に設定します。

 
<browserCaps>
<browserCaps>
	<result type=className />
	<use var=serverVarName />
			property1=value
			property2=value
			propertyN=value
	<filter match=string>
			property1=value
			property2=value
			propertyN=value
	</filter>
	<filter match=string>
		<filter match=string with=expressionToSearch>
			property1=value
			property2=value
			propertyN=value
		</filter>
	</filter>
	<filter>
		<case match=string>
			property1=value
			property2=value
			propertyN=value
		</case>
		<case match=string>
			property1=value
			property2=value
			propertyN=value
		</case>
	</filter>
</browserCaps>
 
 

Response.Browser プロパティから返されたブラウザ機能コンポーネントの構成を制御します。<use> 要素の「プロパティ/値」のペアで、ブラウザ機能コンポーネントのプロパティの初期設定値を構成します。<filter> 要素の「プロパティ/値」のペアで、<case> 要素の match 属性に指定した文字列値と <use> 要素の var 属性 (通常は HTTP_USER_AGENT に設定) の値の一致に基づいて、これらのプロパティを更新します。

 
スコープ

任意

 
属性

なし

 
子要素

<result><use><filter>

 

"machine.config" 構成ファイルには、<browserCaps> 要素のデフォルト設定が記述されています。この要素を変更または更新する場合は、このデフォルト設定を参考にしてください。

 
メモ

この構成要素とその子要素の主要な目的は、新しい種類のブラウザを追加し、これらのブラウザ機能を更新できるようにすることです。したがって、ページからブラウザ機能コンポーネントを呼び出すと、現在の要求に使用されているブラウザの機能に関する正確な情報が返されます。

 
<result>

<result type=className />

 
 

クラスを指定します。

 
スコープ

任意

 
属性
 
  • type
      クラス名以外に、省略可能なバージョン、カルチャー、およびブラウザ機能の分析結果が格納されたクラスを指定するキー情報です。このクラスは HttpCapabilitiesBase から派生している必要があります。"machine.config" で設定されている初期設定値は、System.Web.HttpBrowserCapabilities です。
 
子要素

なし

 
メモ

ほとんどの場合、System.Web.HttpBrowserCapabilities のデフォルトのタイプは問題ありません。HttpBrowserCapabilities クラスに定義されていないプロパティを追加する場合、HttpCapabilitiesBase または HttpBrowserCapabilities から派生した独自のクラスを作成することができます。または、代わりに <result> 要素を使用できます。

 
<use>

<use var=serverVariableName as=aliasName />

 
 

ブラウザ機能を評価するときに使用するサーバー変数の名前を設定します。

 
スコープ

任意

 
属性
 
  • var
      使用するサーバー変数の名前です。初期設定値は HTTP_USER_AGENT です。
  • as
      <case> 要素および正規表現でサーバー変数の参照に使用する名前を含む文字列です。
 
子要素

なし

 
メモ

<use> 要素に続けて「プロパティ/値」のペアを記述し、<filter> 要素または <case> 子要素の match 属性で一致が検出されない場合のブラウザ機能コンポーネントのデフォルトのプロパティを指定します。この使用法は、<browserCaps> 要素のエントリで説明します。

 
<filter>
<filter match=string>
	property1=value
	property2=value
	propertyN=value
</filter>
< filter match=string>
	<filter match=string with=expressionToSearch>
			property1=value
			property2=value
			propertyN=value
	</filter>
</filter>
< filter>
	<case match=string>
			property1=value
			property2=value
			propertyN=value
	</case>
	<case match=string>
			property1=value
			property2=value
			propertyN=value
	</case>
</filter>
 
 

<use> 要素で指定されたサーバー変数を検索するための正規表現のパターン、またはそれ以外の任意の表現を指定します。<browserCaps> 要素には、複数の <filter> 要素を含めることができます。また、それぞれの <filter> 要素には、<case> 要素や別の <filter> 要素を含めることができます。<filter> 要素に一致させるためのプロパティの割り当ては、割り当ての順序とは無関係にすべて実行されます。

 
スコープ

任意

 
属性
 
  • match
      一致するパターンです。.NET Framework 正規表現の構文を使用します。この属性は省略可能です。省略した場合、すべての要求は一致すると見なされ、<filter> 要素に含まれるすべてのプロパティと値の割り当てが実行されます。
  • with
      検索対象となる正規表現または文字列です。この属性は省略可能です。省略した場合、<use> 要素で指定したサーバー変数が検索されます。
 
子要素

<case>

 
メモ

<filter> 要素はネストできるので、情報のサブセットを非常に柔軟に配置できます。たとえば、"machine.config" 内のデフォルトの <browserCaps> 要素に <filter> 要素をネストして、HTTP_USER_AGENT サーバー変数に格納されているブラウザのメジャーバージョンおよびマイナーバージョンの両方を指定します。このようにすると、ブラウザのマイナーバージョン (4.x の x など) ごとに異なる特定のプロパティを割り当てることができます。

 
>
<case>
<case match=string>
	property1=value
	property2=value
	propertyN=value
</case>
 
 

1 つの条件のみと一致する条件分岐のグループの中から、プロパティの割り当てが実行される条件を 1 つ指定します。特定の <filter> 要素内の、最初に一致した <case> 要素のみが実行されます。残りの要素は無視されます。

 
スコープ

任意

 
属性
 
  • match
      一致するパターンです。.NET Framework 正規表現の構文を使用します。この属性は省略可能です。省略した場合、すべての要求は一致すると見なされ、<filter> 要素に含まれるすべてのプロパティと値の割り当てが実行されます。
  • with
      検索対象となる正規表現または文字列です。この属性は省略可能です。省略した場合、<use> 要素で指定したサーバー変数が検索されます。
 
子要素

なし

 
メモ

この要素は、一致するアイテムを 1 つだけにしなければならない場合に便利です。たとえば、"machine.config" にあるデフォルトの <browserCaps> の構成では、<case> 要素を使用して win16 属性および win32 属性のプラットフォームを割り当てます。

 
<clientTarget>
<clientTarget>
	<add alias=aliasName
			userAgent=userAgentString />
	<remove alias=aliasName />
	<clear />
</clientTarget>
 
 

指定したブラウザのユーザーエージェント文字列に対するエイリアスを割り当てます。このエイリアスは、表示するコンテンツの種類を決定するときに ASP.NET サーバーコントロールで使用されます。

 
スコープ

任意

 
属性

なし

 
子要素
 
  • <add>
      userAgent 属性で指定したユーザーエージェント文字列の alias 属性で指定した名前のエイリアスを追加します。
  • <remove>
      alias 属性で指定した名前の構成済みエイリアスを削除します。
  • <clear>
      構成済みのエイリアスをすべてクリアします。
 

次の例は、デフォルトの <clientTarget> 要素のものです。

 
<clientTarget>
   <add alias="ie5"
      userAgent="Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)" />
   <add alias="ie4"
      userAgent="Mozilla/4.0 (compatible; MSIE 4.0; Windows NT 4.0)" />
   <add alias="uplevel"
      userAgent="Mozilla/4.0 (compatible; MSIE 4.0; Windows NT 4.0)" />
   <add alias="downlevel"
      userAgent="Unknown" />
</clientTarget>
 
メモ

この要素は主に、組み込み型の ASP.NET サーバーコントロールによって使用されます。したがって、これらのコントロールで上位レベルのコンテンツが表示されるように、既存のエイリアスは変更しないでください。

 
<compilation>
<compilation
	batch=boolean
	batchTimeout=numSeconds
	debug=boolean
	defaultLanguage=languageAlias
	explicit=boolean
	maxBatchSize=maxPages
	maxBatchGeneratedFileSize=maxSize
	numRecompilesBeforeAppRestart=numRecompiles
	strict=boolean
	tempDirectory=dirName >
	<compilers>
		<compiler language=languageAlias
				extension=fileExt
				type=typeName
				warningLevel=number
				compilerOptions=optionString />
	</compilers>
	<assemblies>
		<add assembly=assemblyName />
		<remove assembly=assemblyName />
		<clear />
	</assemblies>
</compilation>
 
 

ASP.NET アプリケーションのコンパイルオプションを構成する属性および子要素を指定します。すべての属性は省略可能です。

 
スコープ

任意

 
属性
 
  • batch
      ページに最初の要求が行われたときに、アプリケーションのすべてのページについて、ASP.NET によるバッチコンパイルを行うかどうかを指定します。初期設定値は True です。
  • batchTimeout
      コンパイラがアプリケーションのページのバッチコンパイルを試行する時間を秒単位で指定します。時間内にデバッグを完了できない場合、ページはそれぞれ最初に要求されたときにコンパイルされます。初期設定値は 15 です。
  • debug
      ページをコンパイルするときにデバッグシンボルを使用するかどうかを指定します。初期設定値は False です。
  • defaultLanguage
      言語が指定されていない ASP.NET ページのインラインコードのコンパイルに使用する言語コンパイラを指定します。初期設定値は VB (Visual Basic .NET) です。
  • explicit
      Visual Basic .NET の Option Explicit コンパイラオプションを有効にするかどうかを指定します。初期設定値は True です。
  • maxBatchSize
      バッチコンパイル時に生成される最大クラス数を指定します。初期設定値は 1000 です。
  • maxBatchGeneratedFileSize
      バッチコンパイル時に生成されるソースファイルの最大サイズを KB 単位で指定します。初期設定値は 3000 です。
  • numRecompilesBeforeAppRestart
      アプリケーションが格納された appDomain が一巡するまで、つまり新しい appDomain が作成されてから古いものが破棄されるまでの間の再コンパイル回数を指定します。初期設定値は 15 です。
  • strict
      黙示的な下位変換を許可しない Visual Basic .NET の Option Strict コンパイラオプションを有効にするかどうかを指定します。初期設定値は False です。
  • tempDirectory
      動的にコンパイルされたアプリケーションコードの一時ファイルを保存するディレクトリを指定します。初期設定値は %windir%\Microsoft.NET\Framework\%version%\Temporary ASP.NET Files です。
 
子要素

<assemblies><compilers>

 

次の例は、Visual Basic .NET の Option Strict コンパイラオプションを有効にして、バッチコンパイルを無効にします。

 
<configuration>
   <system.web>
      <compilation
         batch="false"
         strict="true">
      </compilation>
   </system.web>
</configuration>
 
メモ

修正を行う前に、この要素を変更することで生じる影響を把握しておいてください。たとえば、debug 属性を True に設定するとパフォーマンスが大幅に低下します。strict 属性を True に設定することで、暗示的なデータタイプ変換に起因するバグの発生は抑えられますが、コードの開発中に発生するコンパイルエラーの数は増加します。

 
<assemblies>
<assemblies>
		<add assembly=assemblyInfo />
		<remove assembly=assemblyInfo />
		<clear />
</assemblies>
 
 

ASP.NET ページを動的にコンパイルするときに参照およびリンクされるアセンブリを追加または削除します。動的なコンパイルの間、mscorlib、System、System.Drawing、System.EnterpriseServices、System.Web、System.Data、System.Web.Services、および System.Xml の各アセンブリがデフォルトで参照されます。アプリケーションディレクトリの bin サブディレクトリに配置されているアセンブリも参照されます。

 
スコープ

任意

 
属性

なし

 
子要素
 
  • <add>
      動的なリソースコンパイル中にリンクされるアセンブリのリストに、assembly 属性で指定したアセンブリを追加します。
  • <remove>
      動的なリソースコンパイル中にリンクされるアセンブリのリストから、assembly 属性で指定した構成済みのアセンブリを削除します。
  • <clear>
      構成済みのアセンブリをすべてクリアします。
 

次の例は、動的にコンパイルするアセンブリのリストにアセンブリ System.Web.Mobile を追加する <add> 要素を示します。この要素は Mobile Internet Toolkit で使用されます。

 
<assemblies>
   <add assembly="System.Web.Mobile,
      Version=1.0.3300.0,
      Culture=neutral,
      PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>
 
メモ

<add> 要素でアスタリスク (*) をワイルドカードとして使用すると、アプリケーションのプライベートアセンブリキャッシュにあるすべてのアセンブリが、動的なコンパイル中にリンクされるアセンブリのリストに追加されます。このキャッシュのデフォルトの場所は、アプリケーションの bin サブディレクトリです。アスタリスクを設定することで、これらのアセンブリのすべてのメンバーをアプリケーションのすべてのページで自動的に利用できるようになります。

 
<compilers>
<compilers>
<compiler language=languageAlias
	extension=fileExt
	type=typeName
	warningLevel=number
	compilerOptions=optionString />
</compilers>
 
 

<compiler> 要素が含まれます。ASP.NET で使用する特定のコンパイラの構成オプションをそれぞれの要素で定義します。

 
スコープ

任意

 
属性

なし

 
子要素

<compiler>

 
メモ

ASP.NET では、<compilers> 要素および <compiler> 要素が導入されたことで、<compiler> 要素を新たに追加するだけで新しい .NET 言語に対するサポートが簡単に追加されます。この要素には言語名のエイリアス、言語のクラスファイルの拡張子、および言語コンパイラの種類に関する情報を指定します。

 
<compiler>
<compiler language=languageAlias
	extension=fileExt
	type=typeName
	warningLevel=number
	compilerOptions=optionString />
 
 

言語に対する構成オプションを指定します。

 
スコープ

任意

 
属性
 
  • language
      @ Page ディレクティブの language 属性で言語の指定に使用する名前を指定します。名前が複数ある場合は、セミコロンで区切ります。この属性は必須です。
  • extension
      指定した言語のコードビハインドファイルに使用する拡張子を指定します。エントリが複数ある場合は、セミコロンで区切ります。この属性は必須です。
  • type
      指定した言語のリソースのコンパイルに使用するクラスについて、.NET のタイプ情報を指定します。この属性は必須です。
  • warningLevel
      言語に対するコンパイラの警告レベルを指定します。この属性は省略可能です。また、すべてのコンパイラでサポートされるわけではありません。
  • compilerOptions
      コンパイラに渡す有効なコンパイラオプションを格納する文字列を指定します。
 
子要素

なし

 
メモ

"machine.config" の <compilers> 要素は、<compilers> 要素が適切に使用されている一例です。この構成セクションを確認して、Visual Basic .NET、C#、および JScript .NET コンパイラの構成方法を参照してください。

 
<customErrors>
<customErrors
defaultRedirect=Url
mode=mode >
<error statusCode=httpStatusCode redirect=Url />
</customErrors>
 
 

ASP.NET アプリケーションで未処理例外が検出された場合に、ユーザーのリダイレクト先となるページを指定します。デフォルトのエラーページ以外に、特定の HTTP エラーコード用のエラーページを指定できます。

 
スコープ

任意

 
属性
 
  • defaultRedirect
      エラーの HTTP ステータスコードに対して特定のエラーページが構成されていないときに、すべてのエラーのリダイレクト先となるページの URL を指定します。この属性は省略可能です。
  • mode
      カスタムエラーモードを指定します。有効な値は、OffOn、および RemoteOnly です。Off を指定すると、カスタムエラー処理が無効になります。On を指定すると、ローカルおよびリモート両方の要求に対して、カスタムエラーページが有効になります。RemoteOnly を指定すると、リモート要求に対するカスタムエラーページが有効になります。ローカル要求に対しては、詳細なエラーメッセージを送信します。この属性は必須です。
 
子要素

<error>

 

次の例は、未処理例外が発生したときに、リモートのクライアントに表示されるデフォルトのページを構成します。

 
<configuration>
   <system.web>
      <customErrors
         defaultRedirect="Error.aspx" />
   </system.web>
</configuration>
 
メモ

mode 属性を RemoteOnly に設定した場合は、ページを実行しているローカルのコンピュータからしか詳細なエラー情報を参照できません。リモート要求は、発生したエラーのステータスコードに対して構成されているカスタムエラーページがある場合はそれを返します。

 

エラー発生時に ASP.NET によって提供されるデバッグ情報を参照する場合は、mode 属性を Off に設定する必要があります。

 
<error>
<error statusCode=httpStatusCode
  redirect=Url />
 
 

特定の HTTP ステータスコードのリダイレクトを処理するカスタムエラーページを指定します。

 
スコープ

任意

 
属性
 
  • statusCode
      指定したカスタムエラーページに対する HTTP ステータスコードを指定します。たとえば、"Not Found" エラーの場合は 404 です。この属性は省略可能です。
  • redirect
      指定したエラーコードと一致する HTTP ステータスコードを持つ要求のリダイレクト先となるページの URL を指定します。この属性は省略可能です。
 
子要素

なし

 

次の例は、404 エラーに対するカスタムエラーページ、および前の例で構成したデフォルトのエラーページを構成します。

 
<configuration>
   <system.web>
      <customErrors
         defaultRedirect="Error.aspx">
         <error statusCode="404" redirect="My404ErrorPage.aspx"/>
      </customErrors>
   </system.web>
</configuration>
 
メモ

カスタムエラーページは、ユーザーに未加工のエラーメッセージを表示しない適切な方法であり、おそらくそれ以上に役立つメッセージも表示できます。ただし、適切な例外処理の代わりにはなりません。エラーがカスタムエラーページに送信されると、エラーからの完全な回復はより難しくなり、ユーザーエクスペリエンスが低下する可能性があります。

 
<globalization>
<globalization
	requestEncoding=encodingString
	responseEncoding=encodingString
	fileEncoding=encodingString
	culture=cultureString
	uiCulture=cultureString />
 
 

エンコードおよびカルチャーの設定を構成する属性を示します。要求、応答、およびファイルの国際化を実現するためのエンコードの基準として、これらの属性を使用します。

 
スコープ

任意

 
属性
 
  • requestEncoding
      着信要求の想定されるエンコードを指定します。すべての有効なエンコード文字列を指定できます。また、responseEncoding 属性に一致している必要があります。初期設定値は UTF-8 です。この属性は省略可能です。
  • responseEncoding
      応答の内容エンコードを指定します。すべての有効なエンコード文字列を指定できます。また、requestEncoding 属性に一致している必要があります。初期設定値は UTF-8 です。この属性は省略可能です。
  • fileEncoding
      .aspx.asmx、および .asax の各ファイルを解析するためのエンコードを指定します。この属性は省略可能です。
  • culture
      着信要求の想定されるカルチャーを指定します。すべての有効なカルチャー文字列を指定できます。この属性は省略可能です。
  • uiCulture
      ロケール固有のリソースを検索するためのカルチャーを指定します。すべての有効なカルチャー文字列を指定できます。この属性は省略可能です。
 
子要素

なし

 

次の例は、"web.config" でデフォルトの <globalization> 設定がどのように構成されているかを示しています。

 
<configuration>
   <system.web>
      <globalization
         requestEncoding="utf-8"
         responseEncoding="utf-8" />
   </system.web>
</configuration>
 
メモ

有効なカルチャー文字列の一覧は、.NET Framework マニュアルの System.Globalization.CultureInfo クラスに関する部分に記載されています。

 
<httpHandlers>
<httpHandlers>
<add verb=httpVerbs
	path=pathInfo
	type=typeInfo
	validate=boolean />
<remove verb=httpVerbs
	path=pathInfo />
<clear />
</httpHandlers>
 
 

指定した HTTP の動詞とファイルの種類またはパスに対して要求の処理を指定する HttpHandlers を追加または削除します。ASP.NET 自体は ".aspx" ファイルと ".asmx" ファイルの HttpHandler として設定されています。HttpHandlers は、"global.asax" などの他の種類の ASP.NET ファイルのソースコードのダウンロードを防ぐために使用されます。

 
スコープ

任意

 
属性

なし

 
子要素
 
  • <add>
      HttpHandler を追加します。HttpHandler で処理される GET、POST などの HTTP の動詞は、verb 属性で指定します。すべての動詞を指定するには、ワイルドカードとしてアスタリスク (*) を使用します。HttpHandler で処理されるパスまたはファイル拡張子は、path 属性で指定します。要求を処理するために使用するクラスは、type 属性で指定します。このクラスは、IHttpHandler インターフェイスを実装する必要があります。validate 属性は、一致する要求を受信する前に、type 属性に指定されたクラスを ASP.NET で読み込むかどうかを示します。
  • <remove>
      指定した verb 属性および path 属性に基づいて、以前に構成した HttpHandler を削除します。この 2 つの属性は、構成済みの <add> 要素と一致させる必要があります。
  • <clear>
      構成済みの HttpHandlers をすべてクリアします。
 

次の例は、ファイル拡張子 .aspnetian のカスタム HttpHandler を構成します。

 
<configuration>
   <system.web>
      <HttpHandlers>
         <add verb="*"
            path="*.aspnetian"
            type="aspnetian.aspnetianHandler" />
      </HttpHandlers>
   </system.web>
</configuration>
 
メモ

上の例を正しく動作させるには、ファイル拡張子 .aspnetian を ASP.NET ISAPI ハンドラーにマップする必要があります。マップしない場合は、要求がカスタム HttpHandler に渡されません。第 9 章では、ASP.NET ISAPI ハンドラーに新たにファイルの種類をマップする処理について、操作手順を示しながら説明しています。

 
<httpModules>
<httpModules>
	<add name=moduleName type=typeInfo />
	<remove name=moduleName />
	<clear />
</httpModules>
 
 

HttpModules を追加または削除します。HttpModules は、すべてのアプリケーション要求の処理に関与する特別なクラスです。ASP.NET の認証および権限の機能と同様に、ASP.NET のキャッシュ機能およびセッション状態の両方が HttpModules として実装されます。

 
スコープ

任意

 
属性

なし

 
子要素
 
  • <add>
      HttpModule を追加します。HttpModule を実装するクラスは、type 属性で指定します。クラスは、IHttpModule インターフェイスを実装する必要があります。name 属性は、HttpModule の参照元エイリアスを示します。このエイリアスは、この後の <remove> 要素にあります。
  • <remove>
      指定した name 属性に基づいて、以前に構成した HttpModule を削除します。この属性は、構成済みの <add> 要素と一致させる必要があります。
  • <clear>
      構成済みの HttpModule をすべてクリアします。
 

次の例は、セッション状態プロバイダの HttpModule を削除します。HttpModule を使用していない場合は便利です。

 
<configuration>
   <system.web>
      <httpModules>
         <remove name="Session" />
      </httpModules>
   </system.web>
</configuration>
 
メモ

セッション状態モジュールや認証モジュールなど、特定の HttpModule を使用していない場合は、<remove> 要素を使用してアプリケーションの "web.config" ファイルからこれらの HttpModules を削除すると、オーバーヘッドを節約できる場合があります。

 
<httpRuntime>
<httpRuntime
 appRequestQueueLimit=numRequests
 executionTimeout=numSeconds
 maxRequestLength=numKBytes
 minFreeLocalRequestFreeThreads=numThreads
 minFreeThreads=numThreads
 useFullyQualifiedRedirectUrl=boolean />
 
 

ASP.NET HTTP ランタイムの設定を構成する属性を記述します。

 
スコープ

任意

 
属性
 
  • appRequestQueueLimit
      要求キューの上限を指定します。 いったん上限に達すると、その後の要求に対して "503 - Server Too Busy" (サーバーはビジー状態) という応答が返されます。初期設定値は 100 です。
  • executionTimeout
      ランタイムによって終了されるまでに要求を実行できる時間を秒単位で指定します。初期設定値は 90 です。
  • maxRequestLength
      クライアントが ASP.NET アプリケーションにアップロードできる最大ファイルサイズを KB 単位で指定します。この属性の主な目的は、大きなファイルをサーバーにアップロードすることで発生するサービス拒否攻撃を防ぐことです。初期設定値は 4096 です。
  • minFreeLocalRequestFreeThreads
      追加のスレッドを必要とするローカルホストからの要求に備えて予約される、スレッドの最小数を指定します。初期設定値は 4 です。
  • minFreeThreads
      追加のスレッドを必要とする要求に備えて予約される、スレッドの最小数を指定します。初期設定値は 8 です。
  • useFullyQualifiedRedirectUrl
      クライアントに送信するリダイレクト用の URL が、絶対パスまたは相対パスのどちらであるかを指定します。初期設定値は False です。相対パスの URL が指定されます。
 
子要素

なし

 

次の例は、クライアントサイドのリダイレクト URL を強制的に絶対パスで設定します。これは、Microsoft Mobile Internet Toolkit で提供される一部のモバイルコントロールで必要な設定です。

 
<configuration>
   <system.web>
      <httpRuntime
         useFullyQualifiedRedirectUrl="true" />
   </system.web>
</configuration>
 
メモ

maxRequestLength は最も一般的にカスタマイズされる属性の 1 つです。4MB というサイズは、ファイルをアップロードする必要のあるサイトにとっては厳しい制限となるサイズです。ただし、この値を増加させる場合は注意が必要です。必要な最大ファイルサイズを超えて値を増加させないでください。値を大きくしすぎると、サイトがサービス拒否攻撃に対して脆弱になります。

 
<identity>
<identity
    impersonate=boolean
    userName=string
    password=string />
 
 

要求の偽装を有効にするかどうか、ASP.NET ワーカープロセスからの要求に使用する ID、およびその ID に対するパスワードを指定します。

 
スコープ

任意

 
属性
 
  • impersonate
      アプリケーションに対して、偽装を有効にするかどうかを指定します。True に設定した場合、ASP.NET ワーカープロセスにより行われた要求は、userName 属性で指定したアカウントのセキュリティコンテキストを使用して実行されます。userName 属性が空白の場合は、ログインしているユーザーのアカウントのコンテキストが使用されます。初期設定値は False です。
  • userName
      偽装に使用する Windows アカウントのユーザー名を指定します。値を空白にした場合、または省略した場合は、ログインしているユーザーのコンテキストで要求が実行されます。
  • password
      userName 属性で指定したアカウントのパスワードを指定します。このパスワードはプレーンテキストで保存されます。
 
子要素

なし

 

次の例は、IIS によって認証されたログインユーザーの偽装を有効にします。

 
<configuration>
   <system.web>
      <identity
         impersonate="true"
         userName="" />
   </system.web>
</configuration>
 
メモ

password 属性は、読み取り可能なテキストでパスワードを保存するため、この機能を使用する場合は慎重に検討してください。パスワードのような機密情報をテキストファイルに保存すると、セキュリティ上の危険を伴う場合があります。

 
<machineKey>
<machineKey
     validationKey="autogenerate|value"
     decryptionKey="autogenerate|value"
     validation="SHA1|MD5|3DES" />
 
 

フォーム認証 Cookie の検証および復号化に使用する暗号化キーの設定を指定します。

 
スコープ

すべて

 
属性
 
  • validationKey
      フォーム認証 Cookie のデータ、ViewState の MAC チェック、およびセッション状態 Cookie の検証に使用するキーです。初期設定値は autogenerate です。乱数キーが生成および保存されます。Web ファーム実装では、すべてのサーバーで検証を正常に実行するため、この値を各サーバー上で 40 ~ 128 文字までの同一のキー値に設定します。
  • decryptionKey
      フォーム認証 Cookie のデータの復号化に使用するキーです。初期設定値は autogenerate です。乱数キーが生成および保存されます。Web ファーム実装では、すべてのサーバーで検証を正常に実行するため、この値を各サーバー上で 40 ~ 128 文字までの同一のキー値に設定します。
  • validation
      データ検証に使用する暗号化の種類を指定します。
 
子要素

なし

 
メモ

Web ファーム環境では、ファームのすべてのサーバー間で validationKey 値および decryptionKey 値が同期されていることが重要です。同期されていない場合、フォーム認証のエラー、ViewState エラー、またはセッション状態の問題が発生することがあります。

 
<pages>
<pages
   buffer=boolean
   enableSessionState="true|false|ReadOnly"
   enableViewState=boolean
   enableViewStateMac=boolean
   autoEventWireup=boolean
   smartNavigation=boolean
   pageBaseType=typeInfo
   userControlBaseType=typeInfo />
 
 

ASP.NET ページおよびユーザーコントロールのデフォルト設定の構成に使用する属性を記述します。@ Page ディレクティブまたは @ Control ディレクティブの属性によって、この要素の設定が上書きされる場合があります。

 
スコープ

任意

 
属性
 
  • buffer
      ページ出力のバッファリングを有効にするかどうかを指定します。初期設定値は True です。
  • enableSessionState
      ページからセッション状態モジュールにアクセスできるかどうかを指定します。有効な値は、TrueFalse、および ReadOnly です。初期設定値は True です。
  • enableViewState
      ページレベルで ViewState を有効にするかどうかを指定します。初期設定値は True です。
  • enableViewStateMac
      ViewState の非表示フィールドで、MAC (Machine Authentication Check) を実行するかどうかをページレベルで指定します。この仕様は、クライアントサイドで ViewState が改ざんされていないかを識別する際に役立ちます。初期設定値は True です。
  • autoEventWireup
      ASP.NET で、Page_Load などの特定のページイベントを自動的にサポートするかどうかを指定します。初期設定値は True です。
  • smartNavigation
      スマートナビゲーション機能をページレベルで有効にするかどうかを指定します。IE 5 以降のバージョンでは、ページの一部のみのポストバックおよび更新がサポートされます。初期設定値は False です。
  • pageBaseType
      すべてのページの派生元になる基本クラスを指定します。初期設定値は System.Web.UI.Page です。
  • userControlBaseType
      すべてのユーザーコントロールの派生元になる基本クラスを指定します。初期設定値は System.Web.UI.UserControl です。
 
子要素

なし

 

次の例は、ページレベルでセッション状態と ViewState の両方を無効にします。

 
<configuration>
   <system.web>
      <pages
         enableSessionState="false"
         enableViewState="false" />
   </system.web>
</configuration>
 
メモ

<pages> 要素は、アプリケーションのページに対するデフォルトをアプリケーションレベルまたはフォルダレベルで設定する場合に便利です。一例として、セッション状態へのアクセスを必要としないページを別個のフォルダに配置し、<pages> 要素を使用してそのフォルダのセッション状態を無効にするという使用法が考えられます。この場合、EnableSessionStateTrue に設定されているアプリケーションのページをユーザーが要求するまでは、そのユーザーのセッションは作成されません。

 

EnableViewStateMac の初期設定値は True です。MAC チェックでは、ViewState の非表示フィールドの暗号化されたバージョンを作成するために <machineKey> 要素の設定が使用されます。したがって、この「メモ」の内容を覚えておくことが重要です。Web ファームを使用する場合、ファーム内の各サーバーの <machineKey> 設定が一致している必要があります。設定が一致していない場合、ユーザーの最初の要求が 1 つのサーバーで処理され、それに続くポストバックが <machineKey> の設定が異なる別のサーバーで処理されるため、MAC チェックが失敗します。

 
<processModel>
<processModel
 	enable=boolean
 	timeout="Infinite"|HH:MM:SS
 	idleTimeout="Infinite"|HH:MM:SS
 	shutdownTimeout="Infinite"|HH:MM:SS
 	requestLimit=numRequests
 	requestQueueLimit="Infinite"|numRequests
 	restartQueueLimit="Infinite"|numRequests
 	memoryLimit=percentMemory
 	cpuMask=cpuNumBitMask
 	webGarden=boolean
 	userName=username
 	password=password
 	logLevel="All|None|Errors"
 	clientConnectedCheck=HH:MM:SS
 	comAuthenticationLevel="Default|None|Connect|Call|Pkt|
    PktIntegrity|PktPrivacy"
	comImpersonationLevel="Default|Anonymous|Identify|Impersonate|
	 Delegate"
	 responseRestartDeadlockInterval="Infinite"|HH:MM:SS
	 responseDeadlockInterval="Infinite"|HH:MM:SS
	 maxWorkerThreads=numThreads
	 maxIoThreads=numThreads
	 serverErrorMessageFile=fileName />
 
 

IIS 5 の ASP.NET ワーカープロセスを構成する属性を記述します。

 
スコープ

コンピュータのみ

 
属性
 
  • enable
      <processModel> 設定を有効にするかどうかを指定します。初期設定値は True です。
  • timeout
      hh:mm:ss 形式で、プロセスの有効期間を指定します。この値の有効期間が終了すると、新しいプロセスが起動され、現在のプロセスがシャットダウンされます。タイムアウトしないようにするには、値 Infinite を使用します。初期設定値は Infinite です。
  • idleTimeout
      hh:mm:ss 形式で、アイドル時のプロセスの有効期間を指定します。この値の有効期間が終了すると、現在のプロセスがシャットダウンされます。タイムアウトしないようにするには、値 Infinite を使用します。初期設定値は Infinite です。
  • shutdownTimeout
      hh:mm:ss 形式で、プロセスが完全にシャットダウンするまでの時間を指定します。この値の有効期間が終了すると、プロセスがシャットダウンされます。タイムアウトしないようにするには、値 Infinite を使用します。初期設定値は 0:00:05 です。
  • requestLimit
      ASP.NET プロセスがシャットダウンされてから再起動されるまでに処理できる要求の数を指定します。COM コンポーネントなどのレガシーリソースをアプリケーションで使用する必要がある場合に、そのリソースを使用することに伴って発生するメモリリークなどの問題を防ぐために、この属性を使用して ASP.NET プロセスを前もって再起動することができます。初期設定値は Infinite です。この機能が無効になります。
  • requestQueueLimit
      ASP.NET がシャットダウンされてから再起動されるまでにキューに置くことができる要求の数を指定します。この属性を使用すると、リソースが競合して要求がキューに置かれる状況を前もって排除できます。初期設定値は 5000 です。
  • restartQueueLimit
      requestQueueLimit の設定に基づいて、プロセスが再起動するときに要求キューに残す要求の数を指定します。初期設定値は 10 です。
  • memoryLimit
      ASP.NET プロセスに割り当てるサーバーの物理メモリの上限をパーセントで指定します。この値を超過すると新しいプロセスが起動され、現在のプロセスはシャットダウンされます。初期設定値は 60 です。
  • cpuMask
      Web ガーデンを使用する場合に、ASP.NET プロセスを実行するマルチプロセッササーバーの CPU を指定します。この値はビットマスクです。初期設定値は 0xffffffff です。すべての CPU に対してワーカープロセスが作成されます。
  • webGarden
      Web ガーデンを有効にするかどうかを指定します。Web ガーデンでは、ワーカープロセスがマルチプロセッササーバー内の特定のプロセッサに割り当てられます。初期設定値は False です。
  • userName
      ASP.NET ワーカープロセスを実行する ID を指定します。これには、有効な NT アカウント、または以下の 2 つの特別な値のうちいずれかを指定できます。
    • SYSTEM
        高度な権限を持つ管理アカウントである SYSTEM アカウントとして、ASP.NET プロセスを実行します。
    • machine
        権限がほとんどない特別なアカウントである ASPNET アカウントとして ASP.NET プロセスを実行します。このアカウントは .NET Framework でインストールされます。このプロセスは初期設定値です。ASP.NET で記述された Web アプリケーションに対して、すぐに実装できる優れたセキュリティが提供されます。<processModel> 要素に関するドキュメントには、SYSTEM が初期設定値であると誤って記述されているので注意してください。
  • password
      userName 属性で指定したアカウントのパスワードを指定します。SYSTEM アカウントまたは machine アカウントを使用する場合は、初期設定値 AutoGenerate を使用してください。
  • logLevel
      NT イベントログに記録される、プロセスイベントの種類を指定します。有効な値は次のとおりです。
    • All
        すべてのプロセスイベントが記録されます。
    • Errors
        エラーのみが記録されます。初期設定値です。
    • None
        プロセスイベントは記録されません。
  • clientConnectedCheck
      ASP.NET プロセスでクライアントの接続が確認されるまでの間、要求をキューに残す時間を hh:mm:ss 形式で指定します。初期設定値は 0:00:05 です。
  • comAuthenticationLevel
      DCOM セキュリティで使用する認証レベルを指定します。初期設定値は Connect です。
  • comImpersonationLevel
      COM セキュリティで使用する認証レベルを指定します。初期設定値は Impersonate です。
  • responseRestartDeadlockInterval
      responseDeadlockInterval 属性の値によってプロセスが再起動するまでの経過時間を hh:mm:ss 形式で指定します。この仕様は、デッドロックによって処理が永続的に実行されることを防ぎます。この機能を無効にするには、値 Infinite を使用します。初期設定値は 00:09:00 です。
  • responseDeadlockInterval
      要求がキューに置かれてから応答がないまま経過できる時間を hh:mm:ss 形式で指定します。この値の有効期間が終了すると、プロセスがシャットダウンされて再起動します。この機能を無効にするには、値 Infinite を使用します。初期設定値は 00:03:00 です。
  • maxWorkerThreads
      スレッドプールにおける CPU ごとのワーカースレッドの上限を指定します。初期設定値は 25 です。
  • maxIoThreads
      スレッドプールにおける CPU ごとの IO スレッドの上限を指定します。初期設定値は 25 です。
  • serverErrorMessageFile
      "Server Unavailable (サーバーを使用できません)" というエラーが発生したときに表示するファイル名を指定します。
 
子要素

なし

 
メモ

IIS 6 のネイティブモードでは、<processModel> 要素の設定は無視されます。

 

<processModel> 要素の設定は、マネージコードではなく、aspnet_isapi.dll アンマネージハンドラーによって読み取られ、適用されます。このハンドラーは、aspnet_wp.exe マネージワーカープロセスに要求を渡します。そのため、<processModel> 要素への変更は、IIS の再起動後に適用されます。

 
<securityPolicy>
<securityPolicy>
    <trustLevel
       name=trustLevelName
       policyFile=fileName />
</securityPolicy/>
 
 

<trust> 要素によって使用される、信頼名のセキュリティポリシーファイルへのマップを構成します。セキュリティポリシーファイルには、その信頼レベルに固有のコードアクセスセキュリティ権限を構成する要素を記述します。<securityPolicy> には、<trustLevel> 要素を含めることができます。

 
スコープ

コンピュータ、アプリケーション

 
属性

なし

 
子要素
 
  • <trustLevel>
      それぞれの <trustLevel> 要素で、特定のポリシーファイルに信頼レベル名をマップし、その信頼レベルに相当するコードアクセスセキュリティ権限を実装します。name 属性には、<trust> 要素で信頼レベルの参照先となる名前を指定します。policyFile 属性には、その名前にマップするポリシーファイルの名前を指定します。
 

次の例は、"machine.config" のデフォルトの <securityPolicy> 要素のものです。

 
<securityPolicy>
   <trustLevel
      name="Full"
      policyFile="internal" />
   <trustLevel
      name="High"
      policyFile="web_hightrust.config" />
   <trustLevel
      name="Low"
      policyFile="web_lowtrust.config" />
   <trustLevel
      name="None"
      policyFile="web_notrust.config" />
</securityPolicy>
 
メモ

特定のアプリケーションに対して、適用されているコードアクセスセキュリティ権限を修正する場合は、新しい CAS ポリシーファイルを作成し、<trustLevel> 要素を使用してそのファイルをカスタム信頼レベルにマップすることができます。アプリケーションに新しいセキュリティポリシーを実装するには、"web.config" ファイルに <trust> 要素を追加し、その要素を使用して名前によりマップしたポリシーファイルを指定します。

 
<sessionState>
<sessionState
 	mode="Off|Inproc|StateServer|SQLServer"
 	cookieless=boolean
 	timeout=numMinutes
 	stateNetworkTimeout=numSeconds
 	stateConnectionString="tcpip=server:port"
 	sqlConnectionString=connString/>
 
 
スコープ

コンピュータ、アプリケーション

 
属性
 
  • mode
      セッション状態を有効にするかどうかを指定します。有効にする場合は、さらに状態データの保存方法を指定します。有効な値は次のとおりです。
    • Off
        セッション状態を無効にします。
    • InProc
        ローカルサーバーのメモリにセッション状態データを保存します。このモデルは、従来の ASP のセッション状態と同じです。このセッション状態モードでは、Web ファームのサーバー間でセッション状態を共有することはできません。
    • StateServer
        指定した状態サーバー上の特別な NT 状態サービスのメモリに、セッション状態データを保存します。このセッション状態モードでは、Web ファームのサーバー間でセッション状態を共有できます。
    • SQLServer
        指定した SQL Server 上の特別な SQL Server データベースに、セッション状態データを保存します。このセッション状態モードでは、Web ファームのサーバー間でセッション状態を共有できます。また、SQL Server データベースをセットアップするために、SQL クエリーを実行する必要があります。SQL クエリーは、.NET Framework SDK に含まれています。

    初期設定値は InProc です。

  • cookieless
      ユーザーを特定のセッションに関連付けるために Cookie を使用するかどうかを指定します。True に設定した場合、セッション ID は各要求の URL に自動的に書き換えられます。この設定を正しく動作させるには、アプリケーションで相対 URL を使用する必要があります。初期設定値は False です。
  • timeout
      セッションが非アクティブのとき、つまり、そのセッション ID を持つ要求を受信しないときのタイムアウトまでの時間を分単位で指定します。初期設定値は 20 です。
  • stateNetworkTimeout
      StateServer セッション状態モードで稼動中に、ネットワーク操作がタイムアウトするまでの時間を秒単位で指定します。初期設定値は 10 です。
  • stateConnectionString
      StateServer モードを使用する場合に、セッション状態サーバーのサーバー名または IP アドレスと、TCP ポート番号を指定します。このモードの属性が StateServer の場合には、この属性は必須です。初期設定値は tcpip=127.0.0.1:42424 です。
  • sqlConnectionString
      SQLServer 状態モードを使用する場合に、SQL Server 名および認証の資格情報を指定します。このモードの属性が SQLServer の場合には、この属性は必須です。初期設定値は data source=127.0.0.1;user id=sa;password= です。この値では信頼関係接続をできる限り使用して、SQL のユーザー ID とパスワードが "web.config" ファイルまたは "machine.config" ファイルに保存されないようにしてください。SQL Server の状態モードをサポートするには、対象となる SQL Server で "InstallSqlState.sql" バッチファイルを実行し、ASPState データベースおよび関連するテーブルとストアドプロシージャーを作成する必要があります。このファイルは、デフォルトで %windir%\Microsoft.NET\Framework\%version% フォルダにインストールされます。
 
子要素

なし

 

次の例は、SQL Server の Cookie を使用しない設定で実行するようにセッション状態を構成します。

 
<configuration>
   <system.web>
      <sessionState
         mode="SQLServer"
         cookieless="true"
         sqlConnectionString="data source=myServer;trusted_
connection=true" />
   </system.web>
</configuration>
 
メモ

信頼関係接続を行う SQL Server モードを使用するには、ASP.NET ワーカープロセスのアカウント ID が SQL Server データベースにログインしている必要があります。また、ASPState データベースと TempDB データベースに対するアクセス許可を持っている必要があります。信頼関係接続を使用できない場合は、状態データベースにアクセスする特別なアカウントを作成し、そのアカウントを sqlConnectionString 属性に使用する必要があります。

 

out-of-process セッション状態モードのいずれかを使用する場合は、@ Page ディレクティブの EnableSessionState 属性を使用して、セッション状態を使用しないアプリケーションのページに対するセッション状態を無効にすることをお勧めします。有効にしたままだと、使用されることのないセッション状態情報を取得するために、これらのページからコンピュータ間での不必要な呼び出しが行われます。セッションデータの読み取りは行うが変更は行わないページがある場合、EnableSessionState 属性を ReadOnly に設定すると、更新されたセッションデータを保存するためのコンピュータ間の呼び出しを回避することができます。

 
<trace>
<trace
	 enabled=boolean
	 localOnly=boolean
	 pageOutput=boolean
	 requestLimit=numRequests
	 traceMode="SortByTime|SortByCategory" />
 
 
スコープ

任意

 
属性
 
  • enabled
      トレースを有効にするかどうかを指定します。初期設定値は False です。
  • localOnly
      ローカルホスト以外のコンピュータでトレースの出力を表示できるようにするかどうかを指定します。初期設定値は True です。
  • pageOutput
      トレースの出力をページに表示するのか、またはメモリに保存して、特別な Trace.axd URL からアクセス可能にするのかを指定します。Trace.axd は、指定したアプリケーションに対して現在保存されているすべてのトレースを表示する HttpHandler にマップされます。初期設定値は False です。
  • requestLimit
      Trace.axd が読み取るトレースバッファに保存できる要求の数を指定します。保存されている要求のトレースの総数がこの属性で指定した数になると、トレースログがクリアされるまで新しいトレースは保存されません。Trace.axd に表示されるページには、トレースログをクリアするリンクが記述されています。初期設定値は 10 です。
  • traceMode
      トレースのトレース情報セクションに記録するアイテムの並べ替え順序を指定します。有効な値は、SortByTime および SortByCategory です。SortByCategory は、独自のカテゴリ名がパラメータとして渡される Trace.Write および Trace.Warn を使用する場合に便利です。初期設定値は SortByTime です。
 
子要素

なし

 

次の例は、アプリケーションレベルでトレースを有効にします。

 
<configuration>
   <system.web>
      <trace enabled="true" />
   </system.web>
</configuration>
 
メモ

第 10 章では、ASP.NET のトレース機能の使用方法に関する概要を説明します。

 
<trust>
<trust
 	level="Full|High|Low|None"
 	originUrl=URL />
 
 

<securityPolicy> 要素の <trustLevel> 子要素を使用して作成された名前付きの信頼レベルをコンピュータ、サイト、またはアプリケーションに割り当てます。

 
スコープ

コンピュータ、アプリケーション

 
属性
 
  • level
      適用する信頼レベルを指定します。この属性には、<securityPolicy> 要素で定義されたすべての値を指定できます。初期設定値は Full です。この属性は必須です。
  • originUrl
      アプリケーションの元の URL を指定します。この属性を使用すると、ある特定のセキュリティ権限のために元のホスト情報を必要とする WebRequest などのクラスが正しく機能します。この属性は省略可能です。
 
子要素

なし

 

次の例は、カスタム信頼レベルに基づいて、アプリケーションの CAS アクセス許可を設定します。

 
<configuration>
   <system.web>
      <trust level="myTrustLevel" />
   </system.web>
</configuration>
 
メモ

この要素を使用する前に、カスタムのセキュリティポリシーのマップを使用した場合にセキュリティに及ぼす影響を理解しておいてください。アクセス許可の設定を誤ると、アプリケーションに重大な問題を引き起こす場合があります。

 
<location>
<location
    path=pathToConfigure
    allowOverride=boolean >
    <system.web>
        <! --  Configuration settings  -- >
    </system.web>
</location>
 
 

"machine.config" または "web.config" の設定が子の構成ファイル内で上書きされないようにします。親フォルダの構成ファイルにある特定のファイルまたはフォルダの設定を構成するためにも使用できます。

 
スコープ

任意

 
属性
 
  • path
      <location> タグ内に記述されている構成設定を適用するファイルまたはフォルダへのパスを指定します。
  • allowOverride
      <location> タグ内で構成されている値を、子の構成ファイルで上書きできるかどうかを指定します。この属性は、統一を強制する構成設定を "machine.config" レベルでロックダウンします。
 
子要素

<system.web>

 

次の例を "machine.config" で使用した場合、コンピュータ上のすべてのアプリケーションで Windows 認証が強制的に使用されます。

 
<configuration>
   <location
      allowOverride="false">
      <system.web>
         <authentication mode="Windows">
      </system.web>
   </location>
   <system.web>
      <!-- Other configuration settings -->
   </system.web>
</configuration>
 
メモ

このタグを使用すると、構成を広範囲に制御できます。すべてのアプリケーションで 1 つの認証方法を強制する以外に、path 属性を使用して、アプリケーションルートの "web.config" ファイルの複数の子フォルダまたは子ファイルを構成できます。この構成を使用すると、大規模アプリケーションの管理に多数の子 "web.config" ファイルを使用する必要がなくなります。