Web/ASP.NET Core
Static files
dozob
2021. 12. 6. 16:42
Static files are stored within the project's web root directory.
The default directory is {content root}/wwwroot,
but is can be changed with the UseWebRoot method.
The parameterless UseStaticFiles method overload marks the files in web root as servable.
app.UseStaticFiles();
The following markup references wwwroot/images/image.png.
<img src="~/images/image.png" class="img" alt="test image" />
the tilde character ~/ points to the web root.
Serve files outside of web root
A request can access the MyStaticFiles/images/image.png file by configuring the Static File Middleware as follows:
using System.IO;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.FileProviders;
:
builder.Services.AddDirectoryBrowser();
var app = builder.Build();
:
app.UseHttpsRedirection();
app.UseStaticFiles();
var fileProvider = new PhysicalFileProvider(
Path.Combine(app.Environment.ContentRootPath, "MyStaticFiles"));
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = fileProvider,
RequestPath = "/StaticFiles",
OnPrepareResponse = ctx =>
{
ctx.Context.Response.Headers.Append(
"Cache-Control", "no-store");
}
});
app.UseDirectoryBrowser(new DirectoryBrowserOptions
{
FileProvider = fileProvider,
RequestPath = "/DB"
});
app.UseAuthorization();
:
The following markup references MyStaticFiles/images/image.png:
<img src="~/StaticFiles/images/image.png" class="img" alt="outside image" />
Uses FileServer Middleware
using System.IO;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.FileProviders;
:
app.UseHttpsRedirection();
app.UseStaticFiles();
var fileProvider = new PhysicalFileProvider(
Path.Combine(app.Environment.ContentRootPath, "MyStaticFiles"));
app.UseFileServer(new FileServerOptions
{
FileProvider = fileProvider,
RequestPath = "/StaticFiles",
EnableDirectoryBrowsing = true
});
app.UseAuthorization();
: