自定义静态文件提供程序被功能覆盖

Custom static file provider is overridden by feature

我已将自定义文件提供程序注册为静态文件提供程序,但它似乎被覆盖了。我从来没有接到 IFileInfo.CreateReadStream 的任何电话,但仍在提供文件。问题是我正在尝试为一些经常读取的文件添加内存缓存,所以我在第一次读取时在我的自定义文件信息 class 中实现了它。但现在这似乎被 IHttpSendFileFeature 覆盖了。这一点也不是很清楚。 IHttpSendFileFeature 比基本的 CreateReadStream+CopyTo 更好的是什么?它是否实现了某种缓存本身?也许我根本不应该尝试在此处添加自定义缓存。我不确定文件缓存是否已经在管道的其他地方完成,也许更好?我在 .NET 6 上使用 Kestrel。

我不想在每次请求时都从磁盘读取这些文件,因为我 运行 这是在带有机械光盘的服务器上。如果我 运行 使用 SSD,我想我不必为此担心太多,我的意思是因为 SSD 上的读取速度已经非常快了。而且,我假设 OS 也会做一堆 file-paging/caching?所以也许我应该完全跳过所有自定义缓存?

尝试删除以下内容

app.UseStaticFiles();

调用

app.UseMiddleware<StaticFileMiddleware>();

如果您删除 UseStaticFiles() 而改为调用

app.UseMiddleware<MyStaticFileMiddleware>();

原来的StaticFileMiddleware不应该再叫了

你的 Post 我有点不清楚。你如何提供这些文件? 您描述的服务/功能未在默认服务集合中注册。