【问题标题】:copy file from server to another将文件从服务器复制到另一个
【发布时间】:2010-11-14 15:46:06
【问题描述】:

我必须将一些文件从服务器复制到另一个,我想使用File.Copy 但我如何指定文件的位置?也可以在 from 和 to 上有一个密码识别。

有什么想法吗?

【问题讨论】:

  • 两台服务器如何通信?他们在同一个网络上吗?广告树?
  • 他们在同一个网络上
  • 源服务器和目标服务器是否使用相同的帐户?
  • 他们可以通过UNC paths相互访问吗?
  • 如何从 Windows 资源管理器访问文件?尝试将您在 Windows 资源管理器中看到的路径与 File.Copy() 一起使用,看看是否可以。

标签: c# .net


【解决方案1】:

如果它们是同一本地网络上的两台服务器并且您具有适当的访问权限,您可能可以通过使用 File.Copy 方法并传递您通常用于访问 Windows 资源管理器中的网络共享的任何路径(此可能是 UNC 路径,例如 \\TheRemoteServer\SharedFolder\MyFiles)。如果您可以在资源管理器中复制文件,File.Copy 方法也很可能会成功。

但是,如果您需要在远程服务器上以不同的用户身份进行身份验证以获得适当的权限来复制文件,那么事情会变得有点复杂,因为没有简单的 .NET API 来实现这一点。您可以查看this answer to another question。本质上,它 p/invoke 以不同的用户身份登录到远程机器。登录后即可正常进行文件复制。

另请参阅此问题:Accessing a Shared File (UNC) From a Remote, Non-Trusted Domain With Credentials — 主要是建议使用 WNetUseConnection 连接到远程计算机上的 UNC 路径并进行身份验证的答案。

最后,作为一种预防措施,我觉得我必须指出,每当你开始进行网络文件复制时,你需要非常小心地检查网络路径的可用性,然后再盲目地开始复制(远程服务器可能已关闭,本地计算机可能已失去与网络的连接等)。您可能还需要考虑处理网络操作超时的情况。

【讨论】:

    【解决方案2】:

    您可能希望使用 FTP 或 SSH 作为传输方法来执行此类操作。您只需在服务器端设置正确的服务即可使用这些通信方法。

    那么您需要一个能够使用这些协议的 .Net 库。这是一个:

    http://www.weonlydo.com/FtpDLX.NET/ftp-sftp-ssl-net.asp

    它有效,但由于各种原因,我对它印象并不深刻。我敢肯定还有更多。

    而且,是的,这些协议中的每一个都会向连接系统询问用户名/密码。

    【讨论】:

    • 如果系统在同一个 Windows 网络上,那么 FTP 就太过分了。
    【解决方案3】:

    如果您有管理员权限,我会为“从和到的密码识别”部分添加答案:

    像这样使用管理员共享:

    \\server\c$
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-19
      • 2016-02-26
      • 2021-06-22
      相关资源
      最近更新 更多