web.config
C#を使用してプログラムで変更/操作するにはどうすればよいですか?構成オブジェクトを使用できますか?使用できる場合、構成オブジェクトにどのようにロードweb.config
できますか?接続文字列を変更する完全な例が欲しいのですが。変更後、web.config
ハードディスクに書き戻す必要があります。
web.config
C#を使用してプログラムで変更/操作するにはどうすればよいですか?構成オブジェクトを使用できますか?使用できる場合、構成オブジェクトにどのようにロードweb.config
できますか?接続文字列を変更する完全な例が欲しいのですが。変更後、web.config
ハードディスクに書き戻す必要があります。
回答:
ここにいくつかのコードがあります:
var configuration = WebConfigurationManager.OpenWebConfiguration("~");
var section = (ConnectionStringsSection)configuration.GetSection("connectionStrings");
section.ConnectionStrings["MyConnectionString"].ConnectionString = "Data Source=...";
configuration.Save();
Configuration config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
ConnectionStringsSection section = config.GetSection("connectionStrings") as ConnectionStringsSection;
//section.SectionInformation.UnprotectSection();
section.SectionInformation.ProtectSection("DataProtectionConfigurationProvider");
config.Save();
web.configファイルはxmlファイルなので、xmldocumentクラスを使用してweb.configを開くことができます。更新するxmlファイルからノードを取得し、xmlファイルを保存します。
プログラムでweb.configファイルを更新する方法を詳しく説明したURLです。
http://patelshailesh.com/index.php/update-web-config-programmatically
注:web.configに変更を加えると、ASP.NETはその変更を検出し、アプリケーションを再読み込み(アプリケーションプールをリサイクル)し、その影響はセッション、アプリケーション、およびキャッシュに保持されているデータが失われます(セッション状態を想定) InProcであり、状態サーバーまたはデータベースを使用していません)。
これは、AppSettingsの更新に使用する方法で、Webアプリケーションとデスクトップアプリケーションの両方で機能します。connectionStringsを編集する必要がある場合は、その値を取得してからSystem.Configuration.ConnectionStringSettings config = configFile.ConnectionStrings.ConnectionStrings["YourConnectionStringName"];
、で新しい値を設定できますconfig.ConnectionString = "your connection string";
。これらのconnectionStrings
セクションにコメントWeb.Config
がある場合は削除されることに注意してください。
private void UpdateAppSettings(string key, string value)
{
System.Configuration.Configuration configFile = null;
if (System.Web.HttpContext.Current != null)
{
configFile =
System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
}
else
{
configFile =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
}
var settings = configFile.AppSettings.Settings;
if (settings[key] == null)
{
settings.Add(key, value);
}
else
{
settings[key].Value = value;
}
configFile.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
}