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