Custom static file provider is overridden by feature

358 Views Asked by At

I have registered a custom file provider as static file provider, but it seems to be overridden. I never get any calls to IFileInfo.CreateReadStream, but the files are still being served. The thing is I'm trying to add mem-caching for a few commonly read files, so I was implementing this in my custom file-info class on first read. But now it seems that this is overriden by IHttpSendFileFeature. This is not at all very clear. What is it that IHttpSendFileFeature does that is better than basic CreateReadStream+CopyTo? Is it implementing some kind of caching itself? Perhaps I shouldn't try add custom caching here at all. I'm not sure if file-caching is done elsewhere in the pipeline already, and perhaps much better? I'm using Kestrel on .NET 6.

I don't want to read these files from disk on every request since I'm running this on a server with mechanical discs. If I was running this with SSD's I guess I wouldn't have to worry that much about this, I mean since reads are so fast on SSD already. But also, I assume the OS do a bunch of file-paging/caching as well? So perhaps I should just skip all custom caching altogether?

1

There are 1 best solutions below

3
On BEST ANSWER

Try to remove the following

app.UseStaticFiles();

which calls

app.UseMiddleware<StaticFileMiddleware>();

If you remove UseStaticFiles() and instead call

app.UseMiddleware<MyStaticFileMiddleware>();

The original StaticFileMiddleware should no longer be called.

Your Post is a little unclear to me. How do you Serve those files? The Services / Features you describe are not registered in the default service collection.