【问题标题】:.NET Directory.Move results in Access to path is denied with network paths.NET Directory.Move 导致访问路径被网络路径拒绝
【发布时间】:2022-01-31 09:01:33
【问题描述】:

我知道已经有很多这样的问题,但我发现的问题都没有描述我遇到的情况。

所以我想做的是 通过 Directory.Move 移动目录。源和目标都在同一网络中的文件服务器上,因此两个路径都是网络路径(以 \\SERVER 开头而不是驱动器号)。

应该这样做的应用程序给了我一个“UnauthorizedException:访问被拒绝”。因为它是机密的,所以我不能显示日志或代码。

但我试图通过简单地通过 PowerShell ([System.IO.Directory]::Move()) 调用 Directory.Move 来重现它。在那里我收到了同样的信息。拒绝访问路径 X。仅此而已。

此错误出现在任何用户上下文中。管理员,“以管理员身份运行”的管理员,应用程序的用户和“以管理员身份运行”的应用程序用户。

手动移动这些目录没有问题。

使用 Directory.CreateDirectory 创建目录也可以。但是移动新创建的目录会导致同样的错误。

如果使用本地路径,在文件服务器上执行这些命令就可以了。使用网络路径(仍然在实际的文件服务器上)再次导致访问被拒绝错误。

问题可能出在路径而不是目录上吗?权限均正确且已设置(如前所述,手动操作有效)。有什么解决方法吗?

我真的不知道该怎么办。我是这家公司唯一的开发人员,其余的都是网络工程师,帮不上忙 我也是。

【问题讨论】:

    标签: c# .net powershell file io


    【解决方案1】:

    有许多事情可能会导致它拒绝访问,并且如果没有看到您的代码,就很难为您指明正确的方向。但这里有 2 个场景可能会对您有所帮助。

    场景 1 - 您使用的文件路径格式错误,通常我访问被拒绝,因为网络文件路径的格式实际上是错误的。我建议查找有关如何传递文件路径的示例。还可以与您的网络工程师交谈,并询问他们已为该文件路径设置的权限。

    场景 2 - 当您还需要指定名称时,您可能会传递文件路径。现在我没有所有详细信息,但我在过去使用 Directory.Move 函数时也遇到了问题,我实际上必须指定一个文件名才能将其移动到。您只需将文件和扩展名添加到要复制到的目标路径的末尾即可。

    如果您可以发布更多信息,我可能会为您指明正确的方向,但这是我现在能想到的。我希望这对你有用,或者至少让你更接近答案。祝你好运!

    *编辑:看起来我在场景上错了,看看这个链接Can you move a file/folder across a network share in .NET?

    您必须首先手动创建文件路径,然后将所有文件复制到您创建的新文件路径中。使用不同机器时,Directory.Move 似乎有问题。

    【讨论】:

    • 对于场景 1:我 100% 确信路径是正确的。我可以将它粘贴到文件资源管理器中并打开正确的文件夹。并且为 Directory.Create 使用该路径也可以。我看到了目录的权限,它们是正确的。至于场景2:目录中没有文件。即使,我想移动整个目录,而不仅仅是一个文件。
    • 抱歉,我不得不编辑我的帖子。看看我的链接中的答案。当有两台不同的机器可用时,您似乎无法执行 Directory.Move 。您将必须 1.检查目标文件路径是否存在,如果不存在则创建它。 2. 将文件复制到新创建的文件中。您基本上必须编写自己的 Directory.Move 方法
    • 是的,这似乎可行。也就是说,手动移动文件。但这是一个问题,因为应用程序根本没有被编程来做到这一点。更新总是需要新的许可证、合同和等等。事情做得太复杂了,一年才一次。我的老板会很生气......但谢谢你的回答。编辑是解决方案。
    猜你喜欢
    • 1970-01-01
    • 2013-09-26
    • 2010-11-29
    • 2020-12-01
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多