【发布时间】:2016-02-05 21:05:11
【问题描述】:
我正在用 c# 编写一个窗口服务,我的服务读取一个文件(initialisation.ini),我使用下面的代码给出了这个文件的路径,它在读取这个文件时给出了错误(路径问题),我试过了在控制台应用程序中运行相同的代码进行测试,它可以在控制台应用程序中正常工作,但是当我尝试安装窗口服务时,only 下面会出现错误,我在文件中打印错误,如下所示在服务安装:
the error reading file is : System.IO.DirectoryNotFoundException: Could not find a part of the path 'C:\Files\initialisation.ini'.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize, Boolean checkHost)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
at System.IO.StreamReader..ctor(String path, Encoding encoding)
at System.IO.File.InternalReadAllLines(String path, Encoding encoding)
at ReadingFileFromFolder.Service1.readFile() in c:\Users\ACER\Desktop\KT-iNDIA\November\5thNovemberKtIndia2015\ReadingFileFromFolder\ReadingFileFromFolder\Service1.cs:line 60
在工作控制台应用程序上调试的实际路径是:
C:\Users\ACER\Desktop\KT-iNDIA\November\5thNovemberKtIndia2015\ReadingFileFromFolder\ReadingFileFromFolder\Files\initialisation.ini
我不知道为什么它在文本文件中将路径显示为C:\Files\initialisation.ini(在此错误中)。
我的错误对应的代码是:
try
{
string appRootDir = new DirectoryInfo(Environment.CurrentDirectory).Parent.Parent.FullName;
var filePathAndName = Path.Combine(appRootDir, "\\Files\\initialisation.ini");
lines = File.ReadAllLines(filePathAndName);
foreach (string line in lines)
{
folderInvestigationBureau(line);
}
}
catch (Exception e)
{
m_streamWriter.WriteLine("the error reading file is : " + e);
}
编辑: 即使更改为string appRootDir = AppDomain.CurrentDomain.BaseDirectory; 我尝试打印 appRootDir 以获取运行可执行服务的路径,它也不会打印任何路径。 是否有任何与帐户相关的问题,这是我的项目安装程序属性http://prntscr.com/8z7s15,这是注册表中的条目http://prntscr.com/8z8ivu,另请注意,当我登录计算机打开帐户时,我需要提供密码。如果这就是问题
如何解决?
【问题讨论】:
标签: c# .net directory windows-services filesystems