带有C#FileStreamResult的AmazonS3

带有C#FileStreamResult的AmazonS3,c#,asp.net-core,amazon-s3,C#,Asp.net Core,Amazon S3,我正在尝试将AmazonS3(AWSSDK.S3包)连接到我的ASP.NET核心Web应用程序。我在控制器中有此操作 public async Task<IActionResult> GetFile(string path) { string contentType; new FileExtensionContentTypeProvider().TryGetContentType(path, out contentType);

我正在尝试将AmazonS3(AWSSDK.S3包)连接到我的ASP.NET核心Web应用程序。我在控制器中有此操作

    public async Task<IActionResult> GetFile(string path)
    {
        string contentType;
        new FileExtensionContentTypeProvider().TryGetContentType(path, out contentType);
        contentType = contentType ?? "application/octet-stream";
        try
        {
            var file = await _fileService.DownloadFile(path);
            return new FileStreamResult(file, contentType)
            {
                FileDownloadName = path
            };
        }
        catch (Exception ex)
        {
            return NotFound();
        }
    }
公共异步任务GetFile(字符串路径)
{
字符串内容类型;
新文件扩展ContentTypeProvider().TryGetContentType(路径,out contentType);
contentType=contentType??“应用程序/八位字节流”;
尝试
{
var file=await\u fileService.DownloadFile(路径);
返回新的FileStreamResult(文件,contentType)
{
FileDownloadName=path
};
}
捕获(例外情况除外)
{
返回NotFound();
}
}
_fileService.DwonloadFile如下所示:

    public async Task<Stream> DownloadFile(string fileName)
    {
        var bucketName = fileName.Split('/')[0];
        var fileKey = fileName.Substring(fileName.IndexOf('/') + 1);
        return await _s3service.GetObjectFromS3Async(bucketName, fileKey);
    }
    public async Task<Stream> GetObjectFromS3Async(string bucketName, string keyName)
    {
        try
        {
            var request = new GetObjectRequest
            {
                BucketName = bucketName,
                Key = keyName
            };


            using (var response = await Client.GetObjectAsync(request))
            using (var responseStream = response.ResponseStream)
            {
                return responseStream;
            }
        }
        catch /*(Exception e)*/
        {
            return null;
        }
    }
公共异步任务下载文件(字符串文件名)
{
var bucketName=fileName.Split('/')[0];
var fileKey=fileName.Substring(fileName.IndexOf('/')+1);
返回wait\u s3service.GetObjectFromS3Async(bucketName,fileKey);
}
和s3service.GetObjectFromS3Async如下所示:

    public async Task<Stream> DownloadFile(string fileName)
    {
        var bucketName = fileName.Split('/')[0];
        var fileKey = fileName.Substring(fileName.IndexOf('/') + 1);
        return await _s3service.GetObjectFromS3Async(bucketName, fileKey);
    }
    public async Task<Stream> GetObjectFromS3Async(string bucketName, string keyName)
    {
        try
        {
            var request = new GetObjectRequest
            {
                BucketName = bucketName,
                Key = keyName
            };


            using (var response = await Client.GetObjectAsync(request))
            using (var responseStream = response.ResponseStream)
            {
                return responseStream;
            }
        }
        catch /*(Exception e)*/
        {
            return null;
        }
    }
公共异步任务GetObjectFromS3Async(字符串bucketName、字符串keyName) { 尝试 { var request=newgetobjectrequest { BucketName=BucketName, Key=keyName }; 使用(var response=await Client.GetObjectAsync(请求)) 使用(var responseStream=response.responseStream) { 返回响应团队; } } catch/*(例外情况e)*/ { 返回null; } } 但此代码无法正常工作:在浏览器中,我得到的文件名正确,但大小为0B。我怎样才能解决这个问题