c# - 在 Amazon.S3.AmazonS3Client.UploadPartAsync 上等待未解决
问题描述
我正在等待对 Amazon.S3.AmazonS3Client.UploadPartAsync 的调用,但即使我确定请求已得到满足,等待也永远不会解决。
private async Task<Amazon.S3.Model.UploadPartResponse> UploadPartString(Amazon.S3.AmazonS3Client client, Amazon.S3.Model.InitiateMultipartUploadResponse initiateMultipartUploadResponse, int partNumber, string content)
{
Amazon.S3.Model.UploadPartResponse result;
var length = content.Length * sizeof(Char);
this.LambdaContext.Logger.LogLine($"Uploading to {initiateMultipartUploadResponse.BucketName}:{initiateMultipartUploadResponse.Key}[{partNumber}]({length + " bytes"})");
using (var stream = GenerateStreamFromString(content))
{
// THIS AWAIT does not resolve
result = await client.UploadPartAsync(new Amazon.S3.Model.UploadPartRequest()
{
BucketName = initiateMultipartUploadResponse.BucketName,
Key = initiateMultipartUploadResponse.Key,
PartNumber = partNumber,
UploadId = initiateMultipartUploadResponse.UploadId,
InputStream = stream,
PartSize = 5 * (long)Math.Pow(2, 20),
});
// a breakpoint here never fires
ETags.Add(new Amazon.S3.Model.PartETag(partNumber, result.ETag));
}
return result;
}
等待之后的断点永远不会被击中。我可以在 fiddler 中看到 200 个 OK 响应的列表,因此请求正在运行:
调用代码可以简化为:
var uploadTasks = new List<Task>();
foreach(var batchString in batches)
{
uploadTasks.Add(UploadPartString(client, multipartUploadInitiateResult, partIndex, batchString));
}
Task.WaitAll(uploadTasks.ToArray());
我的调用代码永远不会超过Task.WaitAll();
我在用着
- AWSSDK.Core 3.7.0.17(最新稳定版)
- AWSSDK.S3 3.7.0.18(最新稳定版)
解决方案
推荐阅读
- linux - 设置 Linux 文件句柄分配限制
- reactjs - react测试库中按标签查询material-ui输入
- visual-studio-code - 使用原始 vim 中的 :edit 和 `tab` 时的不同 VSCodeVim 行为
- alfresco-share - Alfresco 文档下载网址不起作用
- javascript - webapi项目如何接受来自客户端的值并将其传递给.html?
- node.js - json2csv没有明智地下载正确的数据列
- java - 没有预设 Content-Type 'null' 的 [class org.springframework.mock.web.MockMultipartFile] 转换器]
- javascript - 无论上传多大尺寸的照片,如何让用户的图像不模糊?
- python - AWS Python 套接字客户端 TimeoutError:[WinError 10060] 连接尝试失败
- python - 如何在多线程烧瓶中使用 psycopg2