我的客户为我提供了一个Python控制台应用程序,该应用程序执行一些工作并将结果写入.txt
文件中。我的任务是编写一个Windows服务,该服务读取特定的.txt
文件并执行进一步的操作。
我在.NET上使用C#编写服务。我的解决方案包含3个项目:
Windows服务层和测试应用程序层都将逻辑层用于核心功能。当我通过测试层运行该应用程序时,一切工作都很好,但是当我尝试通过该服务运行该应用程序时,该服务启动的Python独立应用程序不会写入任何输出文件。我可以看到Python应用程序在任务管理器中运行,但是任何地方都没有输出。我相信Python代码会崩溃,但我无法找到确切原因。
我尝试了以下方法来调试问题:
Windows
和System32
目录中搜索了任何相关的输出文件,只是考虑了将这些目录作为默认工作目录的服务的可能性。我在这里全都没主意。我也应该搜索任何方向吗?
仅需注意,如果重要的话:我正在使用System.Diagnostics.Process
启动Python脚本。
如果它可以在您的测试应用中正常运行,则听起来像是权限问题。 Windows服务以什么安全上下文/用户身份运行,该用户是否有权在期望的位置写入文件系统?您是否尝试过使用输出文件的完整路径来确定预期的位置?
我倾向于编写一个小的python应用程序,该应用程序仅将“ hello world”保存到文件中,并从Windows服务中使之工作,然后从那里开始构建。
借助于timhowarduk的帮助,我终于能够找到问题的根本原因。 python script
正在寻找配置文件,并且当它从Windows服务运行时,它正在System32中寻找该配置文件。
所有Windows服务都从System32运行。
上面的代码使python脚本作为Windows服务的一部分运行,因此它在System32中进行搜索。我想我可能只是要求客户端编辑python脚本以从Windows服务应用程序目录中读取配置。