计划的控制台应用程序与App.config崩溃

时间:2013-09-19 22:08:32

标签: c# windows console-application scheduler

我有一个C#控制台应用程序,可以从app.config读取应用程序设置。控制台应用程序的目标是Windows计划程序任务的操作。它每天运行一次。

由于添加要从配置文件中读取的代码,应用程序仅在由任务计划程序运行时崩溃。手动运行时(从命令提示符或通过在其文件夹中单击它)),应用程序运行时没有任何问题,它完全按预期工作。

以下是从应用设置部分中读取的代码:

int someValue = 1;

try
{
    if (ConfigurationManager.AppSettings["someValue"] != null)
        someValue = int.Parse(ConfigurationManager.AppSettings["someValue"].ToString());
}
catch(Exception exception)
{
    // Write to error log
}

这是我在错误日志中遇到的异常:

Exception: The type initializer for '<my application name>' threw an exception.
System.Configuration.ConfigurationErrorsException: An error occurred loading a configuration file: The parameter 'exePath' is invalid.
Parameter name: exePath ---> System.ArgumentException: The parameter 'exePath' is invalid.
Parameter name: exePath

我已尝试允许任务以最高权限运行。我试过以不同的方式访问配置文件(Configuration.OpenConfigurationExe(...))等...我每次都遇到同样的问题。我已经尝试将我的.exe放在磁盘上的不同位置。这个是在C:\ Program Files中。我环顾了S.O.并且this post表明它可能是读取权限问题,但如果任务在我的域帐户下运行且具有最高权限,那还可以吗?请注意,如果我从命令提示符或通过单击它手动运行它,它运行正常。

如果控制台应用程序已配置为在Windows任务计划程序下运行,我如何可靠地让控制台应用程序读取它app.config

2 个答案:

答案 0 :(得分:2)

解决了它。事实证明我有一些遗留位运行代码如下:

Configuration config = ConfigurationManager.OpenExeConfiguration("<app exe name>");

这是抛出异常的地方,而不是我的问题中的代码。对我感到羞耻。应该更彻底地调试。我删除了所有内容,并通过调用:

替换了上面的本地配置对象用法
ConfigurationManager.AppSettings["someValue"];

答案 1 :(得分:0)

它肯定是一个权限问题,可能不仅仅是读取权限。要检查的事项:

  1. 您的帐户或其他帐户下运行的任务是?如果此应用程序存储在本地配置文件中的目录下,则默认情况下其他管理员帐户也没有权限(他们必须手动设置权限)。尝试将应用程序移动到硬盘驱动器上的本地文件夹,并根据需要设置权限。

  2. 尝试为存储应用程序的目录设置审核设置。如果是权限问题,则安全日志会告诉您更多有关被拒绝的原因和原因。