繁体   English   中英

Amazon S3文件上传进度永远不会达到100%

[英]Amazon S3 File Upload Progress Never Reaches 100%

我正在使用Azure函数和AWS .NET库将blob从流上传到S3。 在此传输期间,我订阅了UploadProgressEvent,该事件接收已传输的字节和完成的百分比。

           uploadRequest.UploadProgressEvent +=
new EventHandler<UploadProgressArgs>
    (uploadRequest_UploadPartProgressEvent);

在这种情况下,我使用实体框架将字节和百分比记录到数据库中,以便了解发生了什么。

      public void uploadRequest_UploadPartProgressEvent(object sender, UploadProgressArgs e)
{
AppDbContext db = new AppDbContext (ConfigurationManager.ConnectionStrings["name"].ConnectionString);
        BlobTriggerLog r = new BlobTriggerLog() { blobName = this.blobName, started = DateTime.Now, awsPercent = e.PercentDone, awsBytesCopied = e.TransferredBytes };
        db.BlobTriggerLogs.Add(r);
         db.SaveChanges();
        transferPercent = e.PercentDone;
}

问题:当我在本地运行该函数时,所有事情都按计划进行,我得到了从0-100%完成的日志,表明我的事件已被触发,直到上传结束。 但是,当我在Azure中运行该功能时,尽管上载成功完成,但是在事件达到100%之前,该事件将停止触发。 对于大文件(100Mb +),在停止日志记录之前,它通常已完成80-98%。 该功能在Azure中被标记为已执行且没有错误。

还有其他人遇到过这个问题吗?

我的调用函数中有一个块等待上传达到100%。

            while(aws.transferPercent != 100)
        {
            Task.Delay(TimeSpan.FromSeconds(0.5)).Wait();
        }

aws.transfer百分比是与我的进度事件相同的类中的变量。

可能是因为您的回调中有很多逻辑,

  public void uploadRequest_UploadPartProgressEvent(object sender, UploadProgressArgs e)
{
        // Just perform a log on e.PercentDone and you can see 100% out there.
}

希望能帮助到你。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM