我有一个Window服务,正在我的机器上运行。我在执行某些功能的相同解决方案中有单独的控制台应用程序。为了访问控制台应用程序的功能,我添加了控制台应用程序的* .exe文件作为对Window Service项目的引用。通过窗口服务调用控制台应用程序
public void OnTimer(object sender, System.Timers.ElapsedEventArgs args)
{
// TODO: Insert monitoring activities here.
EventLog.WriteEntry("Monitoring the System", EventLogEntryType.Information);
string[] arr = new string[] { };
ConsoleApplication.Program.Main(null);
}
如果我直接通过Visual Studio运行,控制台应用程序完美工作。但是,如果我从窗口服务调用Main()方法,我得到一个空指针异常。
public static void Main(string[] args)
{
try
{
//CODE BREAKS HERE ON READING FROM CONFIG FILE
string genesis_sel= ConfigurationSettings.AppSettings["genesis_sel"].ToString();
}
catch (Exception ex)
{
//Exception code
}
}
下面是在Visual Studio中运行的控制台应用程序项目的快照。
我不知道是什么导致,而从一个窗口服务访问的主要方法的代码打破。
有什么建议吗?
更新:增加了配置文件的快照。我不相信这是来自配置文件的rad访问问题,因为当我单独运行控制台应用程序时,它正在正确读取。当我通过窗口服务访问它时有一个初始化问题。
UPDATE替换为一个事件日志的主要方法,但仍然得到同样的异常。
貌似配置键,'genesis_sel'及其价值在您的Windows服务的应用程序设置中缺少。 – ashin
你可以分享你的配置文件吗? – aaronR
@ashin不,我不这么认为 –