在将 FormFile 参数处理到即发即弃方法之前传递该参数

问题描述 投票:0回答:1

我有一个 API 控制器,其方法接收文件作为参数。我需要将文件作为参数传递给异步即发即忘方法来处理它。为此,我将文件“注入”到 lambda 函数,负责执行 de F&F 方法。然而,当执行F&F方法时,文件始终被释放。

如何将 FormFile 传递给 F&F 方法,而不释放文件?

这就是我正在做的事情:

[HttpPost]
[Route("example-route")]
public async Task<bool> CannonExcelContactsListUpload(Microsoft.AspNetCore.Http.IFormFile formFile)
{
    this.CannonService.FireAsync<ExampleLogicClass, Microsoft.AspNetCore.Http.IFormFile>(
    async (logic, file) =>
    {
        await logic.ExampleFireAndForgetMethodAsync(file);
    },
    formFile
);

    return true;
}
c# asynchronous file-upload fire-and-forget
1个回答
0
投票

您需要将文件缓冲到

MemoryStream
中,否则一旦请求函数完成,它就会被处理。

[HttpPost]
[Route("example-route")]
public async Task<bool> CannonExcelContactsListUpload(IFormFile formFile)
{
    var ms = new MemoryStream();
    await formFile.CopyToAsync(ms);
    this.CannonService.FireAsync<ExampleLogicClass, Stream>(async (logic, file) =>
        {
            await logic.ExampleFireAndForgetMethodAsync(file);
        },
        ms
    );

    return true;
}
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.