.NET Core 128kb文件大小限制已部署到Azure App Service

时间:2019-07-19 17:46:33

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

我有一个在Azure App Service实例上运行的.NET Core 2.0 Web应用程序。当我尝试使用file.CopyToAsync()上载文件时,如果文件大于128kB,则上载将失败并且没有诊断输出。诸如png之类的某些照片类型即使大小为数mB,也会被切成128kB。

当我尝试在本地运行时,可以将更大的文件上传到本地计算机上的wwwroot/etc...文件夹中,因此该问题似乎特定于Azure App Services。我查阅了有关文件大小限制的文档,等等,但是我只看到每个文件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 App Services在任何地方都找不到对每个文件的限制的参考,因此只是想知道以前是否有人遇到过这种情况。谢谢

1 个答案:

答案 0 :(得分:0)

我认为我已经解决了;为了以防万一,在这里将答案发布给其他人,因为这有一些反对意见。

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

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