2012-03-16 7 views
2

これはから例をコピーしている:私はApp.configファイルから次のカスタムセクションを読みたいC#でXMLとしてweb.configセクションを読み込むには?

How to read custom config section in app.config in c#

<StartupFolders>  
    <Folders name="a"> 
     <add folderType="Inst" path="c:\foo" /> 
     <add folderType="Prof" path="C:\foo1" />  
    </Folders> 
    <Folders name="b"> 
     <add folderType="Inst" path="c:\foo" /> 
     <add folderType="Prof" path="C:\foo1" />  
    </Folders> 
</StartupFolders> 

そして、これはあまりにも私の場合です。しかし、値を扱うためのカスタムクラスを作成し、このクラスをweb.configで定義し、最後に使用する必要はありません。それは私の必要性のために重い重量です。

代わりに私は非常に簡単なことをしたいと思います - XMLとしてセクションを取得する。それから私はそれを解析するために通常のLinq.Xmlを使うことができました。この方法では、各セクションごとに新しいクラスを作成する必要はなく、宣言する必要はありません。私の目的のためには、一方では十分であり、他方では最小限です(入れ子セクションのキー値マッパー)。私。完璧。

欠けているのは(私の質問)です - web.configセクションをXMLとして取得するにはどうすればいいですか?セクションについて 注:だから私はこの問題を回避するために見ているわけではない

同じ理由でシリアライズすることができない手

  • で編集する必要があるため

    • それは、エンコードすることはできませんappSettingsの値としてセクション全体を絞り込む方法はありますが、私は実際にXMLとして適切なセクションを取得する方法を探しています。

      ConfigManager(!)から取得したいと思っています。この方法では、どのweb.configを読むべきかを解決する必要はありません。 Web.configの優先順位を手動で模倣するよりも間違いを起こす機会は少なくなります。


      これを思い出させるために私を許して、私はすでにこの考えられており、それに対して選んだなど、「答え」を避けるため、あなたがこれを行うべきではありません、各セクションごとにカスタムクラスを使用してください。

  • 答えて

    1

    は、私はあなたがそれを手動で行うと、メモリへのWebの設定をロードする必要がどちらかと思う:

    XmlDocument doc = new XmlDocument(); 
    doc.Load(Server.MapPath("~/Web.config")); 
    

    それとも、あなたが避けたいカスタム構成セクションを作成する必要があります。

    +0

    あなたが手動ですべてを行うか、MSが言うように、中堅ではないようです.ConfigurationManagerがconfigを検証する際に非常に厳しいため、設定ファイルに何も追加することさえできません。残念:-( – greenoldman

    -1

    完全にテストされていませんが、このようなものを使用できますか? :

    ConfigurationSection exampleSection = 
        (ConfigurationSection)ConfigurationManager 
                 .GetSection("system.web/exampleSection"); 
    

    次に、exampleSection.ElementInformationを使用して詳細情報を取得しますか?

    関連する問題