部署到 Azure 应用服务的 .NET Core 128kb 文件大小限制



我有一个在Azure App Service实例上运行的.NET Core 2.0 Web应用程序。当我尝试使用file.CopyToAsync()上传文件时,如果文件大于 128kB,则上传失败,没有诊断输出。一些照片类型(如 png)只是在 128kB 时被切碎,即使它们的大小只有几毫秒。

当我尝试在本地运行时,我可以将更大的文件上传到本地计算机上的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 应用服务每个文件如此限制的参考,所以只是想知道其他人以前是否遇到过这种情况。谢谢

我想我已经解决了它; 为了以防万一,将在这里为其他人发布答案,因为这已经获得了一些赞成票。

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

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

最新更新