提问人:DoomBro_Max 提问时间:1/31/2022 最后编辑:DoomBro_Max 更新时间:1/31/2022 访问量:727
.NET Directory.Move 导致“使用网络路径拒绝对路径的访问”
.NET Directory.Move results in Access to path is denied with network paths
问:
我知道已经有一堆这样的问题了,但我发现的这些问题都没有描述我所拥有的场景。
所以我想做的是 通过 Directory.Move 移动目录。源和目标都位于同一网络中的文件服务器上,因此这两个路径都是网络路径(以 \\SERVER 开头,而不是驱动器号)。
应该这样做的应用程序给了我一个“UnauthorizedException:访问被拒绝”。因为它是机密的,所以我无法显示日志或代码。
但是我试图通过 PowerShell ([System.IO.Directory]::Move()) 简单地调用 Directory.Move 来重现它。在那里,我收到了同样的消息。对路径 X 的访问被拒绝。而已。
此错误出现在任何用户上下文中。管理员、具有“以管理员身份运行”的管理员、应用程序的用户和具有“以管理员身份运行”的应用程序用户。
手动移动这些目录可以毫无问题。
使用 Directory.CreateDirectory 创建目录也可以。但是移动新创建的目录会导致相同的错误。
如果使用本地路径,则在文件服务器上执行这些命令就可以正常工作。使用网络路径(但仍在实际文件服务器上)再次导致“访问被拒绝”错误。
难道问题出在路径而不是目录上吗?权限都是正确的并设置好了(如前所述,手动操作工作)。有什么解决方法吗?
我真的不知道该怎么办。我是这家公司唯一的开发人员,其余的都是网络工程师,帮不上忙 我也是。
答:
有许多因素可能导致它拒绝访问,如果不看到您的代码,就很难为您指明正确的方向。但这里有 2 种情况可能会对您有所帮助。
场景 1 - 您使用的文件路径格式错误,通常我的访问被拒绝,因为网络文件路径的格式实际上是错误的。我建议查找有关如何传递文件路径的示例。此外,请与您的网络工程师交谈,并询问他们为该文件路径设置的权限。
方案 2 - 当您还需要指定名称时,您可能正在传递文件路径。现在我没有所有的详细信息,但我过去在使用 Directory.Move 函数时也遇到了问题,我实际上必须指定一个文件名才能将其移动到其中。只需将文件和扩展名添加到要复制到的目标路径的末尾即可。
如果你能发布更多的信息,我也许能为你指出正确的方向,但这是我现在能想到的。我希望这对你有用,或者至少让你更接近答案。祝你好运!
*编辑:看起来我在场景中错了,看看这个链接 你能在.NET的网络共享中移动文件/文件夹吗?
您必须首先手动创建文件路径,然后将所有文件复制到您创建的新文件路径中。当使用不同的机器时,Directory.Move似乎有问题。
评论