【问题标题】:Web.config save problemWeb.config 保存问题
【发布时间】:2011-07-05 06:48:04
【问题描述】:

我想通过 Web 应用程序的前端向用户公开一些 web.config 设置。我可以毫无问题地检索设置,但是当我保存时,我要么收到错误,要么更改没有保存到 web.config 文件中。我正在VS中调试。

如果我运行这个:

    private void SaveWebConfig()
    {
        Configuration webConfig = WebConfigurationManager.OpenWebConfiguration("~//Web.config");
        webConfig.AppSettings.Settings["DocumentPath"].Value = this.txtDocumentsDirectory.Text;
        webConfig.Save();
    }

我收到以下错误: 无法为请求的配置对象创建配置文件。

如果我运行这段代码,什么都不会发生:

 private void SaveWebConfig()
 {
     Configuration webConfig = WebConfigurationManager.OpenWebConfiguration("~//Web.config");
     webConfig.AppSettings.Settings["DocumentPath"].Value = this.txtDocumentsDirectory.Text;
     webConfig.SaveAs("~//Web.config");
 }

【问题讨论】:

    标签: c# asp.net web-config


    【解决方案1】:

    据我所知,web.config 不应被消费网络应用程序更改。 ASP.NET 和 IIS 旨在在每次更新 web.config 时重新启动整个应用程序。

    您的前端不应该只改变加载和保存数据的方式,而是将其公开数据库中的设置并将这些设置保存在数据库中。

    【讨论】:

    • 阿门!你能说“安全漏洞”吗?我知道你可以... :)
    • 好吧,我真的不明白他们为什么要制作 AppSettings 然后让它成为一个只读的密钥集合,不能从应用程序更新,但如果是这样的话,那就这样吧。
    • 应用程序设置是应用程序设置部分的一般包装,在 Windows 应用程序中,您也有 app.config,我相信您实际上可以从应用程序执行中写入它,然后在 IIS / ASP.NET 中只需您不能,但他们有一个通用 API……我们可以讨论几个小时,如果在 ASP.NET 实现中抛出异常是个好主意,但实际上 .NET Framework 是通用的,并且类是在 System.Configuration 程序集中...
    • 明确地说,您可以从 Web 应用程序更改 web.config。这是否是一个好主意是另一回事。
    【解决方案2】:

    这是可以做到的,而且相当容易。是否有效取决于运行您的应用的用户帐户的权限。

    您正在使用双正斜杠,并且 SaveAs 也是错误的。试试:

     private void SaveWebConfig()
     {
         Configuration webConfig = WebConfigurationManager.OpenWebConfiguration("~");
         webConfig.AppSettings.Settings["DocumentPath"].Value =
              this.txtDocumentsDirectory.Text;
         webConfig.Save();
     }
    

    但您可能应该尽可能避免更改(根)web.config。我只在 SiteManager 进行配置更改的特殊页面中看到了这一点。

    【讨论】:

    • 好的,谢谢,这样管理员就不必自己进入 web.config 并配置设置。
    猜你喜欢
    • 2011-07-22
    • 1970-01-01
    • 2016-08-11
    • 2011-08-04
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多