首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在运行时修改web.config appSettings?

如何在运行时修改web.config appSettings?
EN

Stack Overflow用户
提问于 2009-04-06 00:14:47
回答 5查看 121.1K关注 0票数 87

我对如何在运行时修改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静态类,但它们的设置是“只读”的。如何在运行时修改appSettings值?

更新:好吧,5年后的我就在这里。我想指出的是,经验告诉我,我们不应该把任何故意在运行时可编辑的配置放在web.config文件中,而应该把它放在一个单独的XML文件中,正如其中一个用户在下面评论的那样。这将不需要任何编辑web.config文件来重新启动应用程序,这将导致愤怒的用户打电话给你。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-04-06 00:26:13

您需要使用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。这是一个布尔值,指示是否可以使用元素配置单个页面。如果"allowLocation“为false,则无法在单个元素中进行配置。

最后,如果您在IIS中运行应用程序,并从Visual Studio中运行测试示例,情况会有所不同。ASP.NET进程标识是IIS帐户、ASPNET或网络服务(取决于IIS版本)。

可能需要授予ASP.NET或网络服务对web.config所在文件夹的“修改”访问权限。

票数 85
EN

Stack Overflow用户

发布于 2009-04-06 00:22:19

更改web.config通常会导致应用程序重新启动。

如果您确实需要您的应用程序编辑它自己的设置,那么您应该考虑一种不同的方法,比如将这些设置存储到数据库中,或者创建一个包含可编辑设置的xml文件。

票数 25
EN

Stack Overflow用户

发布于 2014-12-11 21:32:42

如果你想避免重启应用程序,你可以移出appSettings部分:

<appSettings configSource="Config\appSettings.config"/>

添加到单独的文件中。与ConfigurationSaveMode.Minimal结合使用

var config = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
config.Save(ConfigurationSaveMode.Minimal);

您可以继续使用appSettings节作为各种设置的存储区,而不会导致应用程序重新启动,也不需要使用与普通appSettings节不同格式的文件。

票数 24
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/719928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档