c# - GetDirectoryContents 方法不显示超过 28MB 的文件

标签 c# azure asp.net-core fileprovider

我当前正在尝试显示目录​​中的文件。为此,我使用 IFileProvider/ContentRootFileProvider 及其方法 GetDirectoryContents(字符串路径)。它在我的本地机器上与 Visual Studio 中的 IIS 一起工作,但在 Azure 上却不起作用。如果我在本地执行它,它会显示每个文件及其详细信息。但当我尝试在 Azure 上运行它时,我只能得到 < 28MB 的文件。经过一番谷歌搜索后,我尝试在 Azure 上编辑 web.config 并将其包含到我的项目中。遗憾的是,这两种情况都不起作用,我仍然只得到小于 28MB 的文件。

我对 web.config 的编辑:

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

任何帮助将不胜感激。

最佳答案

更新

Krishg's 提供的代码有效且值得推荐。

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

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

隐私

我仔细阅读了您的描述并亲自测试过。这个问题很有趣。

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

windows平台下创建,要遍历的文件夹下,如果包含图片文件(格式:jpg, gifpng)、.csproj文件,超过28M的文件将无法识别。

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

解决方案和建议:

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

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

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

enter image description here

测试结果。

enter image description here

enter image description here

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

关于c# - GetDirectoryContents 方法不显示超过 28MB 的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63994097/

相关文章:

c# - 拒绝访问的页面没有被重定向

azure - 是否可以将 Azure 数据工厂管道 runid 添加到 Azure 数据流?

mysql - 无法远程连接到azure mysql数据库

docker - 响应状态码不表示成功 : 401 (Unauthorized) - Azure Devops Feed ASP. NET Core 3.1 Docker Build

elasticsearch - 容器化WebApp的日志不会通过Serilog.Sinks.Elasticsearch发送到Elasticsearch

ubuntu - Visual Studio Code Ubuntu aspnet core 2 容器调试

c# - Rx 的真实世界示例

c# - Net Core : Enforce Required Class Members in Request API Automatically,(非空数据类型)

c# - 具有重复名称值 MVC 的 Http Post

sql-server - Entity Framework 临时保​​存