C# 'Could not find file' 跨网络位置使用 File.Move()
C# 'Could not find file' using File.Move() across network locations
我有一个调用我创建的服务(IIS 应用程序池)的 .dll。两者都位于网络上的不同服务器上。 .dll 调出该服务。该服务然后创建一个文件并将其保存在它自己的驱动器上。该服务然后 returns 将该文件的完整路径返回给调用 .dll。然后 .dll 尝试 File.Move() 此文件到另一个网络驱动器。该服务正在使用应用程序池标识(用于创建和保存文件)和服务帐户 运行 .dll 对源文件夹和目标文件夹具有修改访问权限。所有这些都在本地以及我们的开发和测试环境中流畅地工作,但是在我们的 PROD 环境中我得到这个 "File Not Found" 错误。
<errors exceptionType="FileNotFoundException">
<error Source="mscorlib" TargetSite="Void WinIOError(Int32, System.String)">Could not find file 'filepath'.</error>
<stack> at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)</stack>
<stack> at System.IO.File.InternalMove(String sourceFileName, String destFileName, Boolean checkHost)</stack>
</errors>
错误中的 'filepath' 实际上是生成文件的完整 UNC 路径。我已确认该文件确实存在并将错误中包含的路径复制到 Windows Explorer 打开文件没有问题。我不确定还有什么要看或考虑的。我已经阅读了尽可能多的关于 File.Move 跨网络驱动器的冲突信息,因为我继续用头撞墙试图解决这个问题。
只是回答我自己的问题。看起来 .dll 无法找到网络共享路径。正如我在原来的 post 中所说,复制错误中包含的路径并将其粘贴到 Windows Explorer 中,我毫无问题地打开了文件。但是,文件夹 "Sharing" 选项卡上的实际网络路径设置不正确,因此从技术上讲路径是错误的。修复网络路径后,服务 运行 成功。
我有一个调用我创建的服务(IIS 应用程序池)的 .dll。两者都位于网络上的不同服务器上。 .dll 调出该服务。该服务然后创建一个文件并将其保存在它自己的驱动器上。该服务然后 returns 将该文件的完整路径返回给调用 .dll。然后 .dll 尝试 File.Move() 此文件到另一个网络驱动器。该服务正在使用应用程序池标识(用于创建和保存文件)和服务帐户 运行 .dll 对源文件夹和目标文件夹具有修改访问权限。所有这些都在本地以及我们的开发和测试环境中流畅地工作,但是在我们的 PROD 环境中我得到这个 "File Not Found" 错误。
<errors exceptionType="FileNotFoundException">
<error Source="mscorlib" TargetSite="Void WinIOError(Int32, System.String)">Could not find file 'filepath'.</error>
<stack> at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)</stack>
<stack> at System.IO.File.InternalMove(String sourceFileName, String destFileName, Boolean checkHost)</stack>
</errors>
错误中的 'filepath' 实际上是生成文件的完整 UNC 路径。我已确认该文件确实存在并将错误中包含的路径复制到 Windows Explorer 打开文件没有问题。我不确定还有什么要看或考虑的。我已经阅读了尽可能多的关于 File.Move 跨网络驱动器的冲突信息,因为我继续用头撞墙试图解决这个问题。
只是回答我自己的问题。看起来 .dll 无法找到网络共享路径。正如我在原来的 post 中所说,复制错误中包含的路径并将其粘贴到 Windows Explorer 中,我毫无问题地打开了文件。但是,文件夹 "Sharing" 选项卡上的实际网络路径设置不正确,因此从技术上讲路径是错误的。修复网络路径后,服务 运行 成功。