我有一个windows的应用程序,使用SettingsProvider读配置和组默认值,如果文件不存在。

它工作正常运行正常。

我尝试写一windows服务开始的这个程序。当这是由服务,我得到 System.Configuration.SettingsPropertyNotFoundException 在所有的设定的属性。

我如何能解决这个异常的时服务是否正在运行的程序?

有帮助吗?

解决方案

这仅表示该应用无法读取.Settings文件。我可以想到两个可能的原因:

  1. 该服务在无权访问.settings文件的帐户下运行。(或.config文件,视情况而定),这不太可能,因为该服务可以启动应用程序,并且对应用程序而不是设置文件具有权限没有意义。

  2. 运行时无法找到设置文件。它期望设置位于可执行文件的根启动路径中。检查并确保问题机器上存在它。

    但是,谷歌搜索结果发现了一个我可能没有想到的明显原因。上次编译后是否添加了.settings?在Visual Studio中编译该应用,然后重试...

其他提示

另一个可能的原因是如果你写一个自定义 SettingsProvider 这是扔和例外在 Initialize.

在我的情况下,我做了这样的:

public class CustomSettingsProvider : SettingsProvider
{
    public override void Initialize(string name, NameValueCollection config)
    {
        base.Initialize(name, config);
    }
}

由于 name 总是通过为 null, base.Initialize 是扔一个 ArgumentNullException.我固定的,它通过一个非空的名称是这样的:

    public override void Initialize(string name, NameValueCollection config)
    {
        base.Initialize(name ?? GetType().Name, config);
    }
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top