【问题标题】:update web.config through c# code通过 c# 代码更新 web.config
【发布时间】:2015-06-30 09:14:02
【问题描述】:

我正在尝试通过我的 c# 代码在运行时更新一些配置设置。这是我的 web.config 部分

<appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <add key="URL" value="google.com"/>
  <add key="Domain" value="d"/>
  <add key="Project" value="p"/>
  </appSettings>

这是我正在使用的代码:

Configuration config = WebConfigurationManager.OpenWebConfiguration("~");
System.Configuration.ConfigurationManager.AppSettings.Remove("URL");
System.Configuration.ConfigurationManager.AppSettings.Add("URL","www.stackoverflow.com");
config.Save();

但是,它给出了我的配置文件是只读的错误。 我正在使用 Visual Studio 2013。 我应该如何解决这个问题?

【问题讨论】:

  • 您不应该通过运行时更改配置文件。如果要更改值,请将其保存在 DB、cookie、会话等中。
  • 好的,目前我没有使用数据库,我应该为此目的使用一个吗?
  • 数据库、平面文件等
  • 好的,我试试。谢谢!
  • 如果你真的需要这个,请仔细考虑。如果您仍然这样做 - 这是一个可以帮助您的链接:stackoverflow.com/questions/719928/…

标签: c# asp.net-mvc-5 web-config


【解决方案1】:

请你试试这个?

protected void EditConfigButton(object sender, EventArgs e)
{
   Configuration objConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
   AppSettingsSection objAppsettings = (AppSettingsSection)objConfig.GetSection("appSettings");
   //Edit
   if (objAppsettings != null)
   {
      objAppsettings.Settings["test"].Value = "newvalueFromCode";
      objConfig.Save();
   }
}

或者请参考链接Editing Web.config programatically

【讨论】:

  • 是的,它可以工作,但给了我一个对话框让我继续,因为“某些文件已被更改”。无论如何我可以删除这个?
  • 在开发模式下它会给你一个对话框,当你在 IIS 中使用它时它不会给出任何对话框。
  • 保存/更改配置文件时,这不会重置应用程序吗?
  • 在更改 webconfig 后是的。应用程序池将重新启动,会话状态将丢失
  • 是的@UjjwalVaish 更改配置文件,除了设置屏幕等是非常愚蠢的冒险。即使您有一些可能需要经常更改的值,也不要将其放入 web.config 中,而是将其放入数据库中并对其进行定时刷新或在某些页面上设置触发器以从数据库中刷新它。否则,您的所有用户都将丢失未保存的工作并被淘汰。
猜你喜欢
  • 1970-01-01
  • 2019-07-11
  • 2020-01-01
  • 1970-01-01
  • 2016-04-10
  • 2012-12-24
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多