ASP.NETプロファイルの構造(構成セグメントと構成セグメントプロセッサ)

4094 ワード

すべてのASP.NET構成情報はすべてWebにある.configファイルのconfiguration本の要素には、構成セグメントプロセッサ定義領域と構成セグメント設定領域の2つの主要なパケットが分割されている.
セグメントプロセッサの定義
構成セグメントプロセッサの定義はWebにある.configファイルのconfigSections要素.構成セグメントプロセッサが定義されると、構成を定義するためのsection要素が含まれます.構成セグメントプロセッサ定義は、構成情報の整理を容易にするためにsectionGroup要素にネストすることができる.通常、sectionGroup要素は、構成に適用されるネーミングスペースを示します.例えば、すべてのASPをNETコンフィギュレーションセグメントプロセッサは、system.webコンフィギュレーションセグメントにグループ化されたコードは、以下の通りである.


    <sectionGroup

      name="system.web"

      type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

      <!-- <section />   。 -->

    </sectionGroup>


構成セグメント設定領域の各構成セグメントには、それぞれのプロセッサ定義があります.構成セグメントプロセッサは、ConfigurationSectionを実現するインタフェースである.NET Frameworkクラス.コンフィギュレーション・セグメント・プロセッサ定義には、コンフィギュレーション・セグメント名(pagesなど)と、コンフィギュレーション・セグメントでデータを処理するプロセッサ・クラス名(code System.Web.configuration.PageSectionなど)が含まれます.次の例のコードを参照してください.


      <section

        name="pages"

        type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

      </section>


開発者は、毎回1つの構成セグメントプロセッサしか定義できません.ASP.NETのデフォルトのセグメントプロセッサはMachineにあります.configファイルで予め定義されています.そしてASP.NETのWeb.configルートファイルとその他のプロファイルは自動的にMachine.configファイルで定義された構成プロセッサが派生します.カスタムプロセッサクラスを作成するには、新しい構成セグメントプロセッサを定義する必要があります.
構成セグメントの設定
構成セグメントプロセッサ定義領域の後ろには、実際の構成を含む設定領域があります.
デフォルトでは、ルートディレクトリ構成と一体化されたファイルには、configSection領域のsectionGroupサブ要素に割り当てられた構成セグメント要素があります.%SystemRoot%Microsoft.NETFrameworkバージョン番号CONFIGMachine.config.commentsファイルは関連コンテンツを表示します.
構成セグメント要素に含まれるサブ要素は、親要素のプロセッサによっても同様に処理できます.例えば、次の例に示すpages要素は、pagesによってセグメントプロセッサが構成されているため、サブ要素namespacesに対応するプロセッサは指定されていない.


  <pages

    buffer="true"

    enableSessionState="true"

    asyncTimeout="45"

  <!--     。 -->

  >

    <namespaces>

      <add namespace="System" />

      <add namespace="System.Collections" />

    </namespaces>

  </pages>


Web.configファイルインスタンス
以下の例に示すWeb.configファイルは上記のコードと組み合わせて使用されます.プロセッサは、pages要素のnamespacesサブ要素に対して定義されていないことに注意してください.これは、System.Web.Configuration.PageSectionの構成セグメントプロセッサがpagesのすべてのサブ要素を処理するためである.


<?xml version="1.0" encoding="us-ascii"?>

<configuration>



<!--           。 -->

  <configSections>

    <sectionGroup

      name="system.web"

      type="System.Web.Configuration.SystemWebSectionGroup, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">

      <section

        name="pages" 

        type="System.Web.Configuration.PagesSection, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"

      />

      <!--    <section />   。 -->

    </sectionGroup>

    <!--    <sectionGroup />   <section />   。 -->

  </configSections>



<!--        。 -->

  <pages

    buffer="true"

    enableSessionState="true"

    asyncTimeout="45"

  <!--     。 -->

  >

    <namespaces>

      <add namespace="System" />

      <add namespace="System.Collections" />

    </namespaces>

  </pages>

  <!--        。 -->



</configuration>


質問の編集
構成セグメントの要素は、定義されたXML形式で存在する必要があるため、要素とパラメータはアルファベットの大文字と小文字にも敏感です.また、プロファイルは様々な方法で編集できます.
ASP.NETプロファイルのカスタムプロセッサは、カスタム要素を使用する前にプログラミングによって作成する必要があります.
プロファイルのPathパラメータセット
Webアプリケーションのパスを参照する場合、Web.configファイルのpathパラメータセットでは、アプリケーションルートディレクトリを表す「~/」記号をパスの開始として使用できます.