2

我有一个 Windows 应用程序,它使用 SettingsProvider 读取配置设置并在文件不存在时设置默认值。

它工作正常运行正常。

我正在尝试编写一个启动此应用程序的 Windows 服务。当它由服务运行时,我得到System.Configuration.SettingsPropertyNotFoundException所有设置属性。

当服务运行应用程序时,如何解决此异常?

4

2 回答 2

2

这仅仅意味着应用程序无法读取 .Settings 文件。我可以想到两个可能的原因:

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

  2. 运行时找不到设置文件。它期望设置位于可执行文件的根启动路径中。检查以确保它存在于相关机器上。

然而,一个谷歌结果出现了一个明显的可能原因,我没有想到。.settings 是在上次编译后添加的吗?在 Visual Studio 中编译应用程序,然后重试...

于 2011-12-06T18:30:06.840 回答
1

另一个可能的原因是,如果您编写了一个SettingsProviderInitialize.

就我而言,我这样做了:

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

既然name总是被传为nullbase.Initialize被扔了一个ArgumentNullException。我通过像这样传递一个非空名称来修复它:

    public override void Initialize(string name, NameValueCollection config)
    {
        base.Initialize(name ?? GetType().Name, config);
    }
于 2015-06-27T16:53:31.393 回答