【问题标题】:.NET Core 128kb File size limit deployed to Azure App Service.NET Core 128kb 部署到 Azure 应用服务的文件大小限制
【发布时间】:2019-11-28 17:45:07
【问题描述】:

我有一个在 Azure 应用服务实例上运行的 .NET Core 2.0 Web 应用。当我尝试使用file.CopyToAsync() 上传文件时,如果文件大于 128kB,则上传失败且没有诊断输出。一些像 png 这样的照片类型在 128kB 时会被截断,即使它们的大小只有几 mB。

当我尝试在本地运行时,我可以将更大的文件上传到本地计算机上的 wwwroot/etc... 文件夹中,因此问题似乎特定于 Azure 应用服务。我查看了有关文件大小限制等的文档,但我只看到每个文件 10/50 mB 和每个应用实例 10/50 GB 的限制。

具体实现如下:

Directory.CreateDirectory(Path.Combine(_env.WebRootPath, uploadDir));
foreach (var file in files)
{
    try
    {
        var filePath = Path.Combine(_env.WebRootPath, uploadDir, file.FileName);
        using (var stream = new FileStream(filePath, FileMode.Create))
        {
            await file.CopyToAsync(stream);            
        }
    }
    catch (Exception ex)
    {
        throw;
    }
}

这运行没有错误或异常,但是当我使用 Kudu (site.scm.azurewebsites.net) 查看文件系统时,该文件没有大小列出,无法下载或查看。同样,对于 128kB 或更小的文件大小也非常有效。

我在任何地方都找不到 Azure 应用服务对每个文件的这种限制的参考,所以我想知道以前是否有其他人遇到过这种情况。谢谢

【问题讨论】:

    标签: c# azure file asp.net-core


    【解决方案1】:

    我想我已经解决了;为了以防万一,我会在这里为其他人发布答案,因为这已经得到了一些支持。

    我在发布的代码 sn-p 中循环的 files 对象是 IList<IFormFile> 类型,我是通过在控制器中转换 Request.Form.Files 得到的。我为什么要这样做,我不记得了。无论如何,将文件列表保留为默认的 IFormFileCollection,它被 MVC 绑定(Request.Form.Files 上的类型)似乎可以解决它。它还解决了我遇到的某些文件扩展名无法上传的另一个问题。

    当我打电话给new List<IFormFile>(Request.Form.Files) 时,我似乎无法弄清楚为什么它会中断,但这里的教训应该是避免所有不必要的类型转换或转换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 2020-10-17
      • 2018-11-12
      • 1970-01-01
      • 2020-08-16
      • 2017-05-10
      • 1970-01-01
      相关资源
      最近更新 更多