C# 计划的控制台应用程序与App.config一起崩溃
我有一个C#控制台应用程序,它从其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
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"];