简体   繁体   English

使用AWS .NET SDK将文件上载到S3存储桶时,任务被取消了异常?

[英]Task was cancelled exception when uploading file to S3 bucket using AWS .NET SDK?

I have WebApi method in Asp.Net Core 2 app which's receiving file from Angular in base64 format . 我在Asp.Net Core 2应用程序中有WebApi方法,该应用程序以base64 format从Angular接收文件。 I need these files to be stored on AWS S3 Bucket , I found the code on amazon official docs but it's not working for me. 我需要将这些文件存储在AWS S3 Bucket ,我在亚马逊官方文档上找到了代码,但它对我不起作用。

I'm getting A task was cancelled exception after few seconds. 我得到A task was cancelled在几秒钟A task was cancelled异常。

Here's my code: 这是我的代码:

public async Task UploadFileAsync(string base64Image)
{
    try
    {
        var fileTransferUtility = new TransferUtility(_s3Client);

        var image = Convert.FromBase64String(base64Image);
        MemoryStream memStream = new MemoryStream();
        BinaryFormatter binForm = new BinaryFormatter();
        memStream.Write(image, 0, image.Length);
        memStream.Seek(0, SeekOrigin.Begin);

        await fileTransferUtility.UploadAsync(memStream, BucketName, KeyName);
        Debug.WriteLine("Upload completed");
    }
    catch (AmazonS3Exception e)
    {
        Debug.WriteLine("Error encountered on server. Message:'{0}' when writing an object", e.Message);
    }
    catch (Exception e)
    {
        Debug.WriteLine("Unknown encountered on server. Message:'{0}' when writing an object", e.Message);
    }

}

Any idea? 任何想法?

I'm not aware how things work in Angular but in regular http request coming to asp.net core api task can be cancelled for couple of reasons: 我不知道Angular中的工作原理如何,但是在asp.net核心api任务中的常规http请求可以取消,原因如下:

  1. Timeout (100 sec by default) 超时(默认为100秒)
  2. Executing async method and not awaiting it 执行异步方法而不是等待它
  3. Executing async void method 执行async void方法
  4. Running job in different task/thread and not waiting it to complete 在不同的任务/线程中运行作业而不是等待它完成

Actually 2-4 are same thing: executing job as fire-and-forget. 实际上2-4是相同的事情:执行工作就像点火一样。 The original task finishing and DI disposes all created types and _s3Client, I believe, one of them. 原始任务完成和DI处理所有创建的类型和_s3Client,我相信,其中之一。 That causes all work started on _s3Client to be cancelled. 这会导致在_s3Client上启动的所有工作都被取消。

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

相关问题 有没有办法使用适用于 .NET 的 AWS SDK 将对象从 S3 存储桶下载到文件目标? - Is there a way to download an object from S3 bucket to a file destination using AWS SDK for .NET? AWS开发工具包C#:尝试将对象上传到S3存储桶时为空引用异常 - AWS SDK C#: null reference exception when trying to upload object to S3 bucket 通过C#SDK在存储桶名称中包含句点(点)时,在S3上上传文件时出错 - Error in uploading file on S3 when bucket name containing periods(dots) through c# SDK Amazon S3 SELECT从S3存储桶中的.csv文件返回垃圾数据(使用.NET SDK) - Amazon S3 SELECT returning garbage data from a .csv file in S3 Bucket (using .NET SDK) 使用AWS开发工具包将文件上传到.NET Core中的S3 - Using AWS SDK to upload file to S3 in .NET Core 使用 VPC 终端节点 URL 上传 Amazon S3 存储桶中的文件 - Uploading a file in an Amazon S3 bucket using the VPC endpoint URL 使用AWS S3 SDK for .NET从Amazon S3下载并行批处理文件 - Parallel batch file download from Amazon S3 using AWS S3 SDK for .NET 使用 .net SDK 从 Amazon S3 存储桶下载文件夹 - Download folder from Amazon S3 bucket using .net SDK AWS S3存储桶临时证书下载文件.Net - AWS S3 bucket Temporary Credentials download file .Net 使用SDK和Uploadify将文件上载到Amazon S3时显示的上载进度不正确 - Incorrect upload progress shown when uploading file to Amazon S3 using SDK and Uploadify
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM