2

我正在用 C# / VS2005 编写一个程序来备份我们的生产数据库,对其进行压缩,然后将其传输到远程服务器。我在远程服务器上设置了一个简单的 ftp 站点。

问题是文件只传输了大约一半(~500 - 600 MB)并且程序抛出异常:

“现有连接被远程主机强行关闭”

我使用的代码基本上是从这里剪切和粘贴的,由 Jaimon Mathew 编写,使用套接字:

http://www.csharphelp.com/archives/archive9.html

我已经研究了这个问题,看起来我无法做任何事情来防止连接被关闭,我解决它的唯一方法是使用套接字的“异步”方法。

我一直在搜索并且找不到任何示例代码来执行此操作,而且我无法相信我正在尝试执行的这个简单任务被证明如此困难。

有没有一种简单的方法可以将大型(~1.2 GB)本地文件传输到远程 ftp 站点,如果连接被远程主机关闭,它不会失败(我猜它必须重新连接并恢复传输)?

如果我的老板知道我已经在这方面花了多少时间,而且我们仍然没有前一天在远程服务器上的备份,他会杀了我。

我更愿意在 .NET 程序中做所有事情(我们的系统目前是一个巨大的 Rube Goldberg 机器),但我需要一个快速简单的解决方案。

谢谢,

史蒂夫

4

3 回答 3

2

这是一大堆关于如何进行 FTP 的 C# 示例。特别是,请查看Restart/Retry FTP Upload示例。

于 2009-04-16T19:05:52.850 回答
1

您链接的代码似乎支持恢复上传:

public void upload(string fileName,Boolean resume)

用 resume = true 调用该函数不起作用吗?

于 2009-04-16T19:03:30.237 回答
0

我正在使用后台智能传输服务 (BITS) 通过 HTTP 上传。这是一个特定于平台的解决方案,但运行良好且易于使用。它与 Windows Update 使用的机制相同。

于 2009-04-16T20:00:49.973 回答