【问题标题】:Windows service configuration fileWindows 服务配置文件
【发布时间】:2014-03-26 16:33:18
【问题描述】:

我目前正在开发一个带有配置文件 (servicename.exe.config) 的基本 Windows 服务,这是您在 Visual Studio 项目属性中访问的默认配置文件。该服务安装并正常运行,但是我找不到已安装服务的配置文件。

读/写代码sn-p:

/// <summary>
/// An idle period between sending warning emails to avoid spamming
/// </summary>
public static short WarningEmailIdleMin
{
    get
    {
        return Properties.Settings.Default.WarningEmailIdleMin;
    }
    set
    {
        Properties.Settings.Default.WarningEmailIdleMin = value;
        Properties.Settings.Default.Save();
    }
}

项目设置图片:

  • 服务正在本地系统帐户下运行
  • 停止服务时,更改servicename.exe.config(可执行文件旁边)中的设置并启动服务不会更改设置(证明它没有从该配置文件中提取设置)
  • 在更改服务代码中的设置、停止和启动服务时,该设置具有上次运行的更新值(证明它被保存在某处)
  • AppDomain.CurrentDomain.SetupInformation.ConfigurationFile 指向上面的配置文件

我在defaultpublic用户帐户中查看了AppData的子目录,我还查看了C:\Windows\system32\config\systemprofile\AppData\

任何帮助将不胜感激:)

编辑:添加了保存/读取的代码 sn-p

【问题讨论】:

  • 你能显示你从配置文件中读取该设置的代码吗?
  • 在上面添加了更多内容:) 干杯

标签: c# windows-services


【解决方案1】:

您正在使用用户设置。这些设置不存储在可执行文件旁边的servicename.exe.config 中。我在 MSDN 找到了this article。它描述了 user.config 的存储位置以及如何获取该配置的文件路径。

我个人认为使用用户设置不是 Windows 服务的好选择,Windows 服务默认在本地系统帐户下运行(如果没有设置不同的话)。我建议对这些设置使用本地文件数据库(即 sqlite 或 Sqlserver CE 等)。

【讨论】:

  • 这似乎不是这个文件,因为更改文件并启动服务不使用更新的值。更新服务本身的值也不会更新文件。
  • 另外,如果服务以用户身份运行,配置文件确实会正确保存到用户AppData 文件夹中,但不知道系统用户将其存储在哪里
  • 这些是不使用用户设置的原因 :) 我的一位同事花了一些时间与用户设置一起开发 destkop 应用程序。它运行得不好。它在应用程序运行时工作,我认为在应用程序重新加载时也是如此。但它没有在系统重新启动后幸存下来。我们放弃了这个概念,转而使用数据库或自定义 xml 文件进行用户设置。
  • 我发现用户设置非常适合应用程序开发中的简单内容,只是使用本地系统帐户的 windows 服务我想知道它存储在哪里:)
【解决方案2】:

安装后应该有一个 web.config 文件,如果您在系统上正确安装了它。
已安装的服务不应该在 C:\Windows\system32.... 它应该在 C:\inetpub\wwwroot

【讨论】:

  • 我认为您正在考虑 Web 服务,我正在使用 Windows 服务
  • 好点 - 我最近一直在使用 Web 服务,这缩小了我的视野。
猜你喜欢
  • 1970-01-01
  • 2010-10-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-08
  • 2018-06-12
  • 2010-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多