2014-03-26 299 views
3

我目前正在使用配置文件(servicename.exe.config)开发基本的Windows服务,该配置文件是您在Visual Studio项目属性中访问的默认配置文件。此服务安装并正确运行,但我无法找到已安装服务的配置文件。Windows服务配置文件

读/写的代码段:

/// <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(); 
    } 
} 

项目设置图像: Project settings image

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

我在defaultpublic用户帐户看着的AppData子目录,我也曾C:\Windows\system32\config\systemprofile\AppData\

看任何帮助,将不胜感激:)

编辑:添加保存/读代码片段

+0

你可以显示代码从配置文件中读取该设置的位置吗? – Szymon

+0

已添加更多以上内容:)干杯 –

回答

-2

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

+1

我认为您正在考虑使用网络服务,我正在使用Windows服务 –

+0

好点 - 我最近一直在使用网络服务,这缩小了我的观点。 –

3

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

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

+0

它似乎不是这个文件作为改变文件和启动服务不使用更新的值。同时更新服务中的值本身不会更新文件。 –

+0

此外,如果服务以用户身份运行,则配置文件会正确保存到用户的AppData文件夹中,但不知道它为系统用户存储的位置 –

+0

这些是不使用用户设置的原因:)我的一位同事花了一些时间与用户settigs开发一个destkop应用程序。它运作不好。它正在运行,当应用程序正在运行,我认为这也是应用程序重新加载时。但它没有幸免于重启系统。我们放弃了这个概念,并开始使用数据库或用户设置的自定义xml文件。 – pepo