【问题标题】:Dynamically changing the value of AppSettings in App.config in a WCF WebService在 WCF WebService 的 App.config 中动态更改 AppSettings 的值
【发布时间】:2015-04-03 08:14:41
【问题描述】:

我正在尝试在运行时更改 app.config 文件的 <appSettings> 部分中的键值,以便它代表正确的日期,但由于某种原因,在运行程序时它不会更改任何内容一点也不。我已经尝试了该代码,并且它在其他场合与测试项目一起工作,但由于某种原因它在这里不起作用。

这是有问题的代码:

private void ChangeSyncDate(DateTime date)
{
    System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); // Open App.config
    config.AppSettings.Settings["SyncDate"].Value = date.ToString();
    config.Save(ConfigurationSaveMode.Modified);
    ConfigurationManager.RefreshSection("appSettings");
}

这是使用该代码的函数:

public List<Business.Reservation> RequestReservationRetrieval()
{
        string syncstring = ConfigurationManager.AppSettings["SyncDate"];
        List<Business.Reservation> webReservations;

        using (repo = new ReservationRepository())
        {
            webReservations = repo.ObtainReservations();
        }

        if(syncstring.Equals("nil"))
        {
            ChangeSyncDate(DateTime.Now); // and here
            return webReservations;
        }
        else
        {
            DateTime syncdate = Convert.ToDateTime(syncstring);

            foreach(Reservation r in webReservations)
            {
                if (r.Date <= DateTime.Now && r.Date >= syncdate)
                    webReservations.Remove(r);
            }

            ChangeSyncDate(DateTime.Now); // here
            return webReservations;
        }
    }

就目前而言,我要更改的app.config 中的值根本没有改变。

这是我要修改的值:

<appSettings>
    <add key="SyncDate" value="nil"/>
</appSettings>

感谢您抽出宝贵时间阅读本文。

【问题讨论】:

  • 是app.config还是web.config文件?
  • 在解决方案资源管理器中显示为 App.config。
  • 如果它的 WCF 服务作为问题标题显示,那么它必须是 web.config。如果它的 Windows 可执行文件,那么它必须是 app.config。您的代码用于修改可执行文件的配置文件的内容,而不是用于配置 Web 应用程序。让我们知道它是 exe 还是 wcf 服务?
  • 我知道这不能回答您的问题,但 app.settings 不是执行此操作的正确位置。应用程序设置实际上是在安装时设置的设置。在大多数情况下,您将没有文件的写入权限。相反,我建议您将此信息存储在其他地方。例如,制作一个代表您的“瞬态数据”的对象,包括 SyncDate 的属性 - 使用 xml 或 json 之类的东西对其进行序列化并将其存储在磁盘上。

标签: c# asp.net-mvc wcf


【解决方案1】:

您应该使用 WebConfigurationManager 而不是 ConfigurationManager 来打开 AppSettings。试试看吧。

【讨论】:

  • 由于某种原因没有 System.Web.Configuration 参考,因此我不能使用 WebConfigurationManager!
猜你喜欢
  • 2010-11-24
  • 2015-06-05
  • 1970-01-01
  • 1970-01-01
  • 2016-01-19
  • 2012-06-24
  • 2018-11-09
  • 1970-01-01
  • 2011-12-12
相关资源
最近更新 更多