首页 新闻 会员 周边

ASP .NET Core 静态文件中间件无法处理容器挂载目录?

0
悬赏园豆:50 [已解决问题] 解决于 2019-10-17 14:36

如下所示,配置静态文件中间件,用于访问应用程序根目录video文件夹的文件

var path = Path.Combine(Directory.GetCurrentDirectory(), "video");
app.UseStaticFiles(new StaticFileOptions
            {
                FileProvider = new PhysicalFileProvider(path),
                RequestPath = "/video",
                OnPrepareResponse = context =>
                {
                    var provider = new PhysicalFileProvider(path);
                    var contents = provider.GetDirectoryContents(string.Empty);
                    Console.WriteLine($"files:{string.Join(",", contents.Select(f => f.PhysicalPath))}");
                    Console.WriteLine($"Get video requset from {context.Context.Request.Path}");

                    context.Context.Response.Headers.Append("Cache-Control", $"public, max-age={3600}");
                }
            });

本地调试没有问题,可以通过video/1.mp4,可正常获取静态文件。
构建镜像,容器中运行,未挂载数据盘时也可以正常访问。
但是挂载NFS盘映射video目录后,无法访问。进入容器内部,目录映射无误。
从日志上看,可以接收到文件请求,亦可以打印映射的数据盘的目录文件,但无数据返回

「圣杰」的主页 「圣杰」 | 初学一级 | 园豆:144
提问于:2019-10-16 20:02

建议更详细描述一下

dudu 4年前

@dudu: updated

「圣杰」 4年前
< >
分享
最佳答案
0

进入容器内可以访问对应的文件吗?

收获园豆:40
dudu | 高人七级 |园豆:31007 | 2019-10-17 09:02

可以的

「圣杰」 | 园豆:144 (初学一级) | 2019-10-17 09:14

@「圣杰」: 响应的状态码是什么?

dudu | 园豆:31007 (高人七级) | 2019-10-17 11:57

没有结果返回,请求一直处于pending状态。

把NFS盘换成云硬盘就OK了,猜测是NFS盘的访问限制导致的,有时间在研究了,先行谢过。

「圣杰」 | 园豆:144 (初学一级) | 2019-10-17 14:35
其他回答(1)
0

写个action,直接file.read 这个文件能输出返回么

收获园豆:10
czd890 | 园豆:14412 (专家六级) | 2019-10-17 10:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册