云存储桶在生产中不会一次保存两个文件

Cloud storage bucket does not save two files at a time in production

在开发中,以下代码成功上传了图像文件并调整了缩略图的大小

private string uploadFile(IFormFile file, FileType fileType, UserDTO userDTO)
        {
            try
            {
                var storageObject = storageClient.UploadObjectAsync(
                    bucket: bucketId,
                    objectName: getUniqueFileName(userDTO.UserId, getFileType(fileType)),
                    contentType: file.ContentType,
                    source: file.OpenReadStream(),
                    options: new UploadObjectOptions { PredefinedAcl = PredefinedObjectAcl.PublicRead }
                );

                return storageObject.Result.MediaLink;
            }
            catch (Exception ex)
            {
                logger.LogError("An error ocurred while uploading file, message: " + ex.Message);
                return "";
            }
        }

    private string uploadImageThumbnail(IFormFile file, FileType fileType, UserDTO userDTO)
    {
        try
        {
            using var resourceImage = file.OpenReadStream();

            Image image = Image.FromStream(resourceImage);
            Image thumb = image.GetThumbnailImage(96, 96, () => false, IntPtr.Zero);

            thumb.Save(resourceImage, ImageFormat.Png);

            var storageObject = storageClient.UploadObjectAsync(
                bucket: bucketId,
                objectName: getUniqueFileName(userDTO.UserId, getFileType(fileType)),
                contentType: file.ContentType,
                source: resourceImage,
                options: new UploadObjectOptions { PredefinedAcl = PredefinedObjectAcl.PublicRead }
            );

            return storageObject.Result.MediaLink;
        }
        catch (Exception ex)
        {
            logger.LogError("An error ocurred while uploading file, message: " + ex.Message);
            return "";
        }
    }

但出于某种原因,我无法在生产环境中使用它。在 'production' 存储桶中,只有使用 uploadFile(file, fileType, userDTO) 的第一个文件成功保存,但缩略图没有。

在这里您可以看到两个存储桶的信息,因为您可以看到它们是相同的。

生产中的基础设施: App Engine Flex

中的 .NET Core 3.1 MVC 应用程序 运行

发展中的基础设施: IISExpress 中的 .NET Core 3.1 MVC 应用 运行 捆绑在 Visual Studio

也许是我使用错误或者 App Engine Flexible 出于某种原因无法执行这些请求?

也许代码当然可以改进,但我不明白的是为什么在开发中这行得通,但在生产中却不行。

对于那些将来寻求这个的人,我选择使用 https://github.com/SixLabors/ImageSharp 而不是 System.Drawing.Common 包。似乎 GDI+ 缺少一些库(我不确定如何配置 App Engine 的 Flex 环境并在服务器中下载一些 GDI+ 所需的库,尽管你可以使用 Dockerfile 来完成)而 ImageSharp 会处理这个问题无需安装任何东西。我刚刚使用 Visual Studio.

从 NuGet 下载了它

来自GitHub:

ImageSharp is a new, fully featured, fully managed, cross-platform, 2D graphics library. Designed to simplify image processing, ImageSharp brings you an incredibly powerful yet beautifully simple API.