【问题标题】:How to update settings in web.config File [asp.net]?如何更新 web.config 文件 [asp.net] 中的设置?
【发布时间】:2012-04-15 23:36:46
【问题描述】:

如何在 ASP.Net 中更新web.config 文件中的设置?

<appSettings>
  <add key="DataSource" value="localhost\SQLEXPRESS,1433">
  <add key="InitialCatalog" value="CenTimetracker" />
  <add key="user" value="uzer" /><add key="password" value="pazz" />
  <add key="IntegratedSecurity" value="True" />
  <add key="configured" value="False" />
</appSettings>

我正在开发一个 ASP.NET 网站,并且我正在使用 web.config 文件来保存数据库连接详细信息。如上面的代码段所示。

我正在使用以下代码在运行时检索保存的应用程序设置

string dataSource = ConfigurationManager.AppSettings["DataSource"].ToString();

如何将文本框中的值分配给 web.config 文件?我使用了以下代码,但它不保存配置文件。

ConfigurationManager.AppSettings["DataSource"] = TextDataSource.Text;

【问题讨论】:

    标签: asp.net configuration


    【解决方案1】:

    您还可以在尝试使用此值的同一页面上加载不同的值。 我在调试模式下使用类似的东西。 我之所以选择这个,是因为上面的方法会删除所有与应用设置相关的 cmets。

    public string _path;
    public string Path
    {
        get
        {
            if(_path == null || _path == "")
            {
                if (System.Diagnostics.Debugger.IsAttached)
                {
                    _path = "localhost\SQLEXPRESS,1433";
                }
                else
                {
                    _path = ConfigurationManager.AppSettings["DataSource"];
                }
                return _path;
            }
            return _path;
        }
    }
    

    【讨论】:

      【解决方案2】:

      除了使用 Configuration.Save() 保存配置外,您还需要注意保存文件的文件权限。您需要查看哪个帐户已用于运行您的应用程序,然后将该帐户的“修改/写入”权限添加到 web.config。如果您允许匿名访问,您通常需要设置 iusr_[server] 的权限。在 IIS 中查找这些信息。

      【讨论】:

        【解决方案3】:

        @Keizer ßloodŚucker:您可以按如下方式更改您的 appsetting 值:

            Configuration myConfiguration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("path of webconfig file");
            myConfiguration.ConnectionStrings.ConnectionStrings["myDatabaseName"].ConnectionString = txtConnectionString.Text;
            myConfiguration.AppSettings.Settings.Add("key","value");
            myConfiguration.Save();
        

        【讨论】:

          【解决方案4】:
          Configuration myConfiguration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~");
          myConfiguration.AppSettings.Settings["DataSource"].Value = "some value";
          myConfiguration.Save();
          

          希望对你有帮助。

          【讨论】:

          • 我什至试过了,但它再次生成一个异常,说“加载配置文件时出错:无法映射路径'/'。”我需要定义网络的位置吗? .config 时执行 .OpenWebConfiguration("~")????
          • @KeizerßloodŚucker,如果您的 web.config 在根目录下,则此代码必须有效。我在我的项目中使用它没有任何问题。您将配置文件保存在哪里?
          • web.config 位于默认位置,如下图所示:S i44.tinypic.com/1ttpxd.png
          • @KeizerßloodŚucker,我相信我找到了适合您的解决方案。尝试以管理员权限运行 VS。请让我知道它是否对您有帮助。
          • 非常感谢它在 Visual Studio 中运行良好 :) 但是一旦我在 IIS 服务器中托管该站点,它就会显示“加载配置文件时出错:访问路径 'c:inetpub\wwwroot \CenTrackerWebService_joekcit.tmp' 被拒绝 (c:inetpub\wwwroot\CenTrackerWebService\web.config) 我也更改了 web.config 的访问权限
          猜你喜欢
          • 2013-02-09
          • 2013-05-30
          • 1970-01-01
          • 2012-10-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多