2011-10-12 9 views
6

Web.Configファイルにスローできるルートがたくさんあります。コレクションの各セクション/アイテムに1つのキーと2つの値フィールドが必要です。これに沿った何か...Web.Configのカスタムセクション/コレクション

<routes> 
    <add 
     key="AdministrationDefault" 
     url="Administration/" 
     file="~Administration/Default.aspx" /> 

    <add 
     key="AdministrationCreateCampaign" 
     url="Administration/CreateCampaign/" 
     file="~/Administration/CreateCampaign.aspx" /> 

    <add 
     key="AdministrationLogout" 
     url="Administration/Leave/" 
     file="~/Administration/Leave.aspx" /> 
</routes> 

これは可能ですか?ここ

答えて

7
+1

最後のリンクは私を大いに助けました。ありがとう – roosteronacid

2

はい。一度始めると、それほど難しくはありません。

あなたは<routes>セクションを定義するためにConfigurationSection派生クラスを作成します(その後、あなたのタイプに<routes>要素をリンクする構成に<section>を追加)する必要があります。

次に、コレクションの各要素を定義する型が必要になります。また、デフォルトでは、コレクションの2番目の型のプロパティが指定されています。

このすべてが設定された後、実行時に、あなたの構成セクションにアクセスすると:そこに別のanswerで述べたようにhttp://blog.rjcox.co.uk/category/dev/net-core/

:私のブログは、この背景には、いくつかの記事が掲載されてい

var myRoutes = ConfigurationManager.GetSection("routes") as RoutesConfigSection; 

MSDNのカバレッジ(以前よりずっと優れています)です。

1

あなたはこれを行うことができ、あなたのconfigセクションを表現するクラスを作成したくない場合は、次のダイナミックへの変換

var configSection = ConfigurationManager.GetSection("sectionGroup/sectionName"); 
var aValue = (configSection as dynamic)["ValueKey"]; 

あなたはconfigSectionでキー値にアクセスすることができます。 configSectionにブレークポイントとピークを追加して、そこにあるものと使用するValueKeyを確認しなければならない場合があります。