【问题标题】:Can not delete file off of a server when running on server在服务器上运行时无法从服务器上删除文件
【发布时间】:2014-07-07 20:14:18
【问题描述】:

我拥有的控制台应用程序的一部分用于从我们使用的服务器上的目录中删除不需要的订单文件。当我在本地机器上运行它时,这部分代码工作正常,但是当我们在它自己的服务器上运行它时(这将是一个计划任务),它不再删除文件。

try
{
    System.IO.File.Delete(@"\\ServerName\ProductionFileShare\Orderfiles\FileDir\" + fileName);
}
catch (System.IO.IOException e)
{
    Console.WriteLine(e.Message);
    return;
}

文件名就是 storeorder.txt。

正如我所说,这在我的本地计算机上运行良好,但当我们从服务器本身运行此程序时不会删除文件。有什么想法吗?

更新:异常消息是:进程无法访问文件 '\ServerName\ProductionFileShare\Orderfiles\FileDir\storeorder_07062014_16-25-0.txt',因为它正被另一个进程使用。

这对我来说很奇怪,因为它可以在我的电脑上运行。我将添加一些垃圾回收器,看看会发生什么。

更新 #2:显然修复了它!这是一个意想不到的解决方案。感谢大家抽出宝贵时间发表评论,非常感谢。

【问题讨论】:

  • 而异常中的错误信息是?
  • 本地系统帐户可能没有删除文件的权限。例外应该指向你。
  • 运行任务的帐户可能没有访问网络共享的权限(即使它在同一台机器上)。也许本地文件系统路径 (d:\orderfiles\...) 会起作用。但更多细节将有助于解决问题。
  • 假设您在本地计算机上使用与服务器上相同的凭据运行,另一种可能性是在服务器上启用了用户帐户控制 (UAC)。如果是这样的话:*.com/questions/3925065/…

标签: c# console-application


【解决方案1】:

我之前遇到过这个问题,我只是移动到管理共享(\\server\c$\path\file.txt),或者将路径更改为本地路径,一切都很好。

需要说明的是,既有文件权限,也有访问共享本身的权限,后者很可能是问题所在。

如果更改路径有帮助(并且您无法轻松访问来修复共享),那么您可以将其设为配置设置,并在每个位置使用不同的配置。

【讨论】:

    最近更新 更多