中程度の信頼でプログラムで構成セクションを変更する
-
27-10-2019 - |
質問
アプリケーションにカスタムConfigurationSectionがあります: ジェネラコディセタグプレ
私のweb.configで ジェネラコディセタグプレ
セクションを読むことは問題なく機能します。私が抱えている問題は、セクションを読んだときに ジェネラコディセタグプレ
次に、Server
プロパティの変更に進みます:
ジェネラコディセタグプレ
これは、web.configファイルの「Server」プロパティを変更しません。
注:これは中程度の信頼で機能する必要があるため、正常に機能するWebConfigurationManager.OpenWebConfiguration
を使用できません。自分自身を保存するようにConfigSection
に指示する明示的な方法はありますか?
解決
簡単な答え-いいえ。.NETチームは(伝えられるところでは)v4でこれを修正することを意図していましたが、それは起こりませんでした。
その理由は、WebConfigurationManager.GetSection
を使用すると、ネストされた読み取り専用のNameValueCollection
が返されるためです。これらのコードは、値を変更しても保持されません。正しく確認したように、WebConfigurationManager.OpenWebConfiguration
を使用することが、構成への読み取り/書き込みアクセスを取得する唯一の方法です-しかし、FileIOPermission
が継承されたすべての構成をweb.configにロードしようとすると、OpenWebConfiguration
例外がスローされます-これには、C:\WINDOWS\Microsoft.NET\Framework
にマシンレベルのweb.configファイルとmachine.configファイルが含まれていますが、これらは明示的にMediumTrustの範囲外です。
長い答え-XDocument
/ XmlDocument
とXPathを使用して構成値を取得/設定します。