【问题标题】:how to create a recoverable file uploader console app?如何创建可恢复的文件上传器控制台应用程序?
【发布时间】:2010-12-31 10:36:39
【问题描述】:

我正在将数千个文件上传到服务器。

服务器连接中断分配,所以我需要一种方法让这个控制台应用程序能够在连接失败几秒钟等情况下恢复。

我的应用程序很简单,它只是获取 c:\uploads 文件夹中的所有文件,然后使用 Web 服务将文件上传到服务器。

所以:

foreach(文件中的字符串文件) { 上传到服务器(文件); }

我怎样才能做到这一点,以便在连接失败时重新覆盖? (故障通常只持续几秒钟)

【问题讨论】:

    标签: c# console recovery


    【解决方案1】:

    如果文件上传失败,是否会抛出异常?如果有,则处理异常,并将这些文件存储在某种容器中以便稍后重试,或者您可以放置​​某种 Thread.Sleep 稍等片刻再试一次。

    【讨论】:

      【解决方案2】:

      使用一个小助手方法,在认输之前重试上传几次。例如:

      static void UploadFile(string file) {
        for (int attempt = 0; ; ++attempt) {
          try {
            UploadToServer(file);
            return;
          }
          catch (SocketException ex) {
            if (attempt < 10 && (
                ex.SocketErrorCode == SocketError.ConnectionAborted ||
                ex.SocketErrorCode == SocketError.ConnectionReset ||
                ex.SocketErrorCode == SocketError.Disconnecting ||
                ex.SocketErrorCode == SocketError.HostDown)) {
              // Connection failed, retry
              System.Threading.Thread.Sleep(1000);
            }
            else throw;
          }
        }
      }
      

      根据需要调整异常处理代码。

      【讨论】:

        猜你喜欢
        • 2013-05-15
        • 1970-01-01
        • 2023-04-05
        • 1970-01-01
        • 2015-10-30
        • 1970-01-01
        • 2010-11-04
        • 1970-01-01
        相关资源
        最近更新 更多