Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 计划的控制台应用程序与App.config一起崩溃_C#_Windows_Console Application_Scheduler - Fatal编程技术网

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

C# 计划的控制台应用程序与App.config一起崩溃,c#,windows,console-application,scheduler,C#,Windows,Console Application,Scheduler,我有一个C#控制台应用程序,它从其app.config读取应用程序设置。控制台应用程序的目标是Windows计划程序任务的操作。它每天运行一次 由于添加了从配置文件读取的代码,应用程序只有在由任务调度器运行时才会崩溃。当手动运行(从命令提示符或在文件夹中单击)时,应用程序运行时不会出现任何问题,并且完全按照预期工作 以下是从应用程序设置部分读取的代码: int someValue = 1; try { if (ConfigurationManager.AppSettings["some

我有一个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
异常:“”的类型初始值设定项引发了异常。
System.Configuration.ConfigurationErrorsException:加载配置文件时出错:参数“exePath”无效。
参数名称:exePath-->System.ArgumentException:参数“exePath”无效。
参数名称:exePath
我已尝试允许任务以最高权限运行。我尝试过以不同的方式访问配置文件(
configuration.OpenConfigurationExe(…)
),等等。。。我每次都遇到同样的问题。我已经尝试将我的.exe放在磁盘上的不同位置。这个在C:\Program文件中。我环顾了一下S.O.并建议这可能是一个读取权限问题,但如果任务在我的域帐户下运行,并且具有最高权限,这仍然可能吗?请注意,如果我在命令提示符下手动运行它或单击它,它运行得很好


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

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

  • 尝试为应用程序存储的目录设置审核设置。如果这是一个权限问题,那么安全日志将告诉您更多关于被拒绝的内容和原因


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

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

    有关innerexception的任何进一步信息?您知道异常是来自if子句还是解析吗?如果是解析,你试过使用TryParse吗?肯定不是解析。它来自if中的
    .AppSettings
    调用。否则,异常将不会是
    ConfigurationErrorsException
    在任务计划程序中设置任务时,它更有可能是
    FormatException
    。常规选项卡上的安全选项说明任务将在我的用户帐户下运行。我已经确保无论我是否登录,它都会运行,并且它以最高权限运行。我已尝试将.exe移动到磁盘上的其他不同位置。放在哪里似乎无关紧要。没有安全日志异常。
    ConfigurationManager.AppSettings["someValue"];