【问题标题】:Scheduled Console App Crashes with App.configApp.config 计划的控制台应用程序崩溃
【发布时间】:2013-09-19 22:08:31
【问题描述】:

我有一个 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

【问题讨论】:

  • 关于内部异常的更多信息?你知道异常是来自 if 子句还是解析?如果是解析,您是否尝试过使用 TryParse?
  • 绝对不是解析。它来自 if 中的 .AppSettings 调用。否则异常不会是ConfigurationErrorsException 它更可能是FormatException

标签: c# windows console-application scheduler


【解决方案1】:

解决了。原来我有一些遗留位运行这样的代码:

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

这是抛出异常的地方,而不是我问题的代码中。真丢人。应该更彻底地调试。我将其全部删除,并用以下调用替换了上面的本地配置对象用法:

ConfigurationManager.AppSettings["someValue"];

【讨论】:

    【解决方案2】:

    这肯定是权限问题,而且可能不仅仅是读取权限问题。检查事项:

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

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

    【讨论】:

    • 在任务计划程序中设置任务时,常规选项卡上的安全选项表明任务将在我的用户帐户下运行。我确保无论我是否登录它都能运行,并且它以最高权限运行。我尝试将 .exe 移动到磁盘上的各个其他位置。它放在哪里似乎并不重要。没有安全日志例外。
    猜你喜欢
    • 2017-08-02
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 2013-03-16
    相关资源
    最近更新 更多