3

我目前正在尝试显示我们在目录中的文件。为此,我使用 IFileProvider / ContentRootFileProvider 及其方法 GetDirectoryContents(string path)。它在我的本地机器上使用 Visual Studio 中的 IIS 就像一个魅力,但在 Azure 上却不行。如果我在本地执行它,它会显示每个文件及其详细信息。但是一旦我尝试在 Azure 上运行它,我只会得到小于 28MB 的文件。谷歌搜索了一下后,我尝试在 Azure 上编辑 web.config 并将 web.config 包含到我的项目中。遗憾的是,这两种情况都不起作用,我仍然得到小于 28MB 的文件。

我对 web.config 的编辑:

<security>
    <requestFiltering>
        <!--400 MByte-->
        <requestLimits maxAllowedContentLength="419430400" />
    </requestFiltering>
</security>

任何帮助将非常感激。

4

1 回答 1

2

更新

Krishg's 提供的代码有效且推荐使用。

我提供的解决方案(文件分类)有时会忽略大文件。这种现象很奇怪。

new PhysicalFileProvider(Directory.GetCurrentDirectory(), ExclusionFilters.None);

私人的

我仔细阅读了您的描述并自己进行了测试。这个问题非常有趣。

我尝试创建一个webapp并选择linux平台,一切正常。(如果可以,请选择此计划来部署您的程序)。

在平台下创建windows,在要遍历的文件夹下,如果包含picture files(格式:jpg、、、gif)文件png.csproj则无法识别超过28M的文件。

我使用 kudu 上传大文件。当它小于某个值时,可以看到。上传后就消失了,很奇怪。

解决方案和建议:

1.使用linux平台重新部署webapp

2.对项目中的文件进行分类。遍历时分配给对应的文件夹。

var contents = _fileProvider.GetDirectoryContents("/zip");

在此处输入图像描述

测试结果。

在此处输入图像描述

在此处输入图像描述

3.您可以在门户网站上提出支持票并获得官方答复。如果真的是bug,在你提交问题后,官方会处理并帮助webapp改进。

于 2020-09-30T05:55:26.010 回答