1. ホーム
  2. asp.net

[解決済み] 実行時にweb.configのappSettingsを変更するにはどうしたらいいですか?

2023-05-22 01:43:05

質問

実行時に web.config の appSettings の値を変更する方法について、混乱しています。例えば、私はこのappSettingsセクションを持っています。

<appSettings>
  <add key="productspagedesc" value="TODO: Edit this default message" />
  <add key="servicespagedesc" value="TODO: Edit this default message" />
  <add key="contactspagedesc" value="TODO: Edit this default message" />
  <add key="aboutpagedesc" value="TODO: Edit this default message" />
  <add key="homepagedesc" value="TODO: Edit this default message" />
 </appSettings>

例えば、私は実行時に "homepagedesc" キーを変更したいとします。ConfigurationManagerとWebConfigurationManagerの静的クラスを試しましたが、設定は"read-only"です。実行時にappSettingsの値を変更するにはどうすればよいですか?

UPDATE。 OK、私は5年後にここにいます。私は経験から、意図的に実行時に編集可能な設定をweb.configファイルに入れるのではなく、ユーザーの1人が以下にコメントしたように、別のXMLファイルに入れるべきだと指摘したいと思います。これにより、アプリを再起動するために web.config ファイルを編集する必要がなくなり、その結果、怒ったユーザーがあなたに電話をかけてくるようになります。

どのように解決するのですか?

この場合 WebConfigurationManager.OpenWebConfiguration() : 例として

Dim myConfiguration As Configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~")
myConfiguration.ConnectionStrings.ConnectionStrings("myDatabaseName").ConnectionString = txtConnectionString.Text
myConfiguration.AppSettings.Settings.Item("myKey").Value = txtmyKey.Text
myConfiguration.Save()

を設定する必要があるかと思います。 許可場所 を machine.config で設定する必要があるかもしれません。これは、その要素を用いて個々のページを設定できるかどうかを示すブーリアン値です。"allowLocation"がfalseの場合、個々の要素で設定することはできません。

最後に、アプリケーションを IIS で実行し、Visual Studio からテスト サンプルを実行する場合、違いが生じます。ASP.NET プロセスの ID は、IIS アカウント、ASPNET または NETWORK SERVICES (IIS バージョンによる) です。

ASPNET または NETWORK SERVICES に web.config が存在するフォルダーの変更アクセスを許可する必要がある場合があります。