我有一个从目录中读取xml文档的服务(正常工作),将数据保存在sql中(正常工作),之后我将文件复制到FINISHED目录(工作正常)并删除文件(阅读目录中没有工作。我遇到的问题是当我尝试执行DELETE时文件被锁定。任何建议将不胜感激,所以我可以找到文件被锁定的位置。
static public Res GetResMn(string FileName)
XDocument root = null;
using (var file = new FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (StreamReader oReader = new StreamReader(file, Encoding.GetEncoding("ISO-8859-1")))
{
root = XDocument.Load(oReader);
oReader.Close();
oReader.Dispose();
}
以下是复制和删除的代码
void CopyFile(string FileToMove, string MoveLocation)
{
try
{
System.IO.File.Copy(FileToMove, MoveLocation, true);
//System.IO.File.Move(FileToMove, MoveLocation);
File.Delete(FileToMove);
}
catch (Exception e)
{
WriteLogFile("The process failed: {0} " + e.ToString());
}
}
这是从文件
获取值时的代码 var myElement1 = root.Descendants(XName.Get("rnID", @"namespace.2.0")).FirstOrDefault();
if (myElement1 != null)
{
myRPr.rnID = root.Descendants(XName.Get("rnID", @"namespace.2.0")).FirstOrDefault().Value;
}
这是我在logFile中收到的错误
{0} System.UnauthorizedAccessException: Access to the path 'C:\ReadingDirectory\FileName.xml' is denied.
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.File.Delete(String path)
at OperaWinSrvc.OperaWinSrvc.ReadFiles()
当我尝试使用时,我遇到了同样的错误
System.IO.File.Move
答案 0 :(得分:1)
确保在尝试删除之前在文件对象上调用.Close()
,并且您还具有从该文件夹中删除的安全权限。
拒绝访问通常是权限问题,但有时可能是由文件锁定条件引起的。
答案 1 :(得分:0)
在不同地方进行多次检查后,我终于找到了解决问题的方法。在服务安装程序中,我将Account属性设置为Local Service,我将其更改为LocalSystem,重新安装该服务,它现在似乎正常工作。