我已经设置了控制台,库和服务项目。 Library项目将文件加载到文件夹中,并将文本存储在变量中。
然后控制台项目将操纵这些变量。我能够成功运行Console项目并加载文件没有问题。这些文件在DLL中设置为Copy Always,并被指定为Build Action的内容。
当我尝试在服务中运行完全相同的代码时。
File.ReadAllText(@"MyFolder\SomeFile.txt");
它抛出以下异常。
The type initializer for 'MyLibrary.Data.ReadFiles' threw an exception.
我使用Setup Project类型来创建安装程序。服务安装后,文件MyFolder
确实存在于服务的应用程序文件夹中,以及文件中。还有什么可能导致我的服务无法读取这些文件的问题?
编辑1
public class ReadFiles {
public static string DataFile = File.ReadAllText(@"MyFolder\SomeFile.txt");
}
答案 0 :(得分:1)
您正在运行Windows服务的服务帐户,无权从您尝试访问的位置进行阅读。您看到的错误与您显示的代码可能存在于ReadFiles
类型的构造中这一事实有关。
答案 1 :(得分:0)
在运行节点js应用程序,发送电子邮件的Windows服务之一中遇到了类似的问题。 当我们从同一目录运行时,它运行良好,但是与Windows服务运行相同的应用程序时出现问题,无法发送电子邮件。 @meanbunny的评论确实有帮助,因此将其添加为答案。
如果在代码中提到它们是相对路径,则Windows服务将无法访问目录/文件,最好使用绝对路径,或者如注释中提到的@Mike那样更灵活,以便对每个文件使用app.config服务。