跨网络位置使用 File.Move() 的 C# 'Could not find file'



我有一个.dll,它调用我创建的服务(IIS应用程序池(。两者都位于网络上的不同服务器上。.dll调用该服务。然后,该服务创建一个文件并将其保存在自己的驱动器上。然后,该服务将该文件的完整路径返回到调用的.dll。然后,.dll尝试"文件"。将此文件移动((到另一个网络驱动器。服务正在使用应用程序池标识(创建和保存文件(,并且运行.dll的服务帐户对源文件夹和目标文件夹都具有"修改"访问权限。所有这些在本地以及我们的开发和测试环境中都能很好地工作,但在我们的PROD环境中,我遇到了"找不到文件"的错误。

<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资源管理器中可以打开该文件。我不知道还能看什么或考虑什么。我已经阅读了尽可能多的关于文件的冲突信息。在网络驱动器之间移动,我继续用头撞墙试图解决这个问题。

只是为了回答我自己的问题。.dll在查找网络共享路径时出现问题。正如我在最初的帖子中所说,复制错误中包含的路径并将其粘贴到Windows资源管理器中,我打开了文件,没有遇到任何问题。然而,文件夹"共享"选项卡上的实际网络路径设置不正确,因此从技术上讲,路径是错误的。一旦我们修复了网络路径,服务就成功运行了。

相关内容

最新更新