繁体   English   中英

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

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

我在Asp.Net Core 2应用程序中有WebApi方法,该应用程序以base64 format从Angular接收文件。 我需要将这些文件存储在AWS S3 Bucket ,我在亚马逊官方文档上找到了代码,但它对我不起作用。

我得到A task was cancelled在几秒钟A task was cancelled异常。

这是我的代码:

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);
    }

}

任何想法?

我不知道Angular中的工作原理如何,但是在asp.net核心api任务中的常规http请求可以取消,原因如下:

  1. 超时(默认为100秒)
  2. 执行异步方法而不是等待它
  3. 执行async void方法
  4. 在不同的任务/线程中运行作业而不是等待它完成

实际上2-4是相同的事情:执行工作就像点火一样。 原始任务完成和DI处理所有创建的类型和_s3Client,我相信,其中之一。 这会导致在_s3Client上启动的所有工作都被取消。

暂无
暂无

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

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