2012-01-23 7 views
5

ウェブのConfigSectionに直接マップする1つのクラスを作成しました。 config。そして、私は今web.configセクションのランタイムを変更する方法は?

<myConfigDemo fileName="myXml.xml" rootNode="world" childNode="country" comparableAttributes="id, population"> 

    </myConfigDemo> 

問題として、このセクションを使用していた

<configSections> 
    <section name="myConfigDemo" type="myConfiguration"/> 
    </configSections> 

:私は以下のようにweb.configファイル内のセクションを作成している

public class myConfiguration: ConfigurationSection 
{ 
    public myConfiguration() 
    { 
     // 
     // TODO: Add constructor logic here 
     // 
    } 

    [ConfigurationProperty("fileName", IsRequired = true)] 
    public string FileName 
    { 
     get { return this["fileName"] as string; } 
    } 


    [ConfigurationProperty("rootNode", IsRequired = true)] 
    public string RootNode 
    { 
     get { return this["rootNode"] as string; } 
    } 

    [ConfigurationProperty("childNode", IsRequired = true)] 
    public string ChildNode 
    { 
     get { return this["childNode"] as string; } 
    } 

    [ConfigurationProperty("comparableAttributes", IsRequired = true)] 
    public string ComparableAttributes 
    { 
     get 
     { return this["comparableAttributes"] as string; } 
    } 
} 

:私のクラス定義を以下に示します。どのように実行時にfileName = "anotherFile.xml"を割り当てることができますか?私は試しました

[ConfigurationProperty("fileName", IsRequired = true)] 
    public string FileName 
    { 
     get { return this["fileName"] as string; } 
     set { 
      string str = this["fileName"] as string; 
       str = value; } 
    } 

しかし、私のVisual Studioは、私は上記のコードを使用して私のPCをハングアップさせる!私はプロパティが読み取り専用であることをご存知の場合getしかし、set私のPCをハングさせる!ファイル名のランタイムを変更するにはどうすればよいですか?

+0

http://stackoverflow.com/questions/719928/how-do-you-modify-the-web-config-appsettings-at-runtime –

+0

1時間以内に同じタイトルの2つの質問がありますか?新しい質問を作成するのではなく、元の質問を編集する必要があります。 http://stackoverflow.com/questions/8968924/how-to-modify-web-config-runtime(またはそれらが強く異なる場合はタイトルを変更してください) –

+0

私はそれについて 'appSettings'と思っています!システム構成と私は自分の構成について熱望しています!私が知っているように 'appSettings'ランタイムを変更することはできますが、私が知りません自分の設定を変更する方法! dの方法で提案していただきありがとうございます! – Chintan

答えて

2

.configファイル(appSettingsまたはConnectionStrings要素だけでなく)にあるほとんどすべてをより正確にアクセスできるように設計された.netクラスがあります。ここに書類:http://msdn.microsoft.com/en-us/library/x1et32w6.aspx

私は彼らが値を変更する方法を提供するかどうかは分かりませんが(見てみましょう)。しかし、gotcha:configファイルは起動時にアプリケーションを設定するように設計されています。言い換えれば、アプリケーションが起動時にファイルを読み込み、手動またはプロセスによって変更された場合は再び読み込みます。 asp.netアプリケーションの場合、これはアプリケーションが自動的に(デフォルトではIISの設定で)再起動することを意味します。

実行時に本当にアプリケーションを再構成したい場合は、ファイルを保存するたびに再起動するように強制します。したがって、その場合は、メモリ内のすべての変更を(たとえばxmlクラスを使用して)行うコードを書いて、一度にすべて保存してください。

設定変更時に自動再起動を無効にする設定がapp-pool内にあります。ただし、これを行うと、設定を変更したときにアプリケーションが再起動されず、変更を反映するために再起動するコードを記述する必要があります。 http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx

私はそれが役に立てば幸い:あなたは自動的にXML要素にカスタム設定クラスをシリアル化したい場合は

このクラスでは、あなたの友人かもしれません。