Problem
How to serve static content (HTML, CSS, JavaScript, Images) from ASP.NET Core application.
Solution
Modify the Configure() method in Startup class to use middleware for static files.
- public void Configure(
- IApplicationBuilder app,
- IHostingEnvironment env)
- {
- app.UseStaticFiles();
-
- app.UseStaticFiles(new StaticFileOptions()
- {
- FileProvider = new PhysicalFileProvider(
- Path.Combine(Directory.GetCurrentDirectory(), "content")),
- RequestPath = new PathString("/outside-content")
- });
-
- app.Run(async (context) =>
- {
- await context.Response.WriteAsync("Hello Static Files");
- });
- }
Add static content to www root and a custom content folder.
Access the files using site address.
- http://[site-address]/hello.html
- http://[site-address]/outside-content/info.html
Discussion
Static files are served by default from the wwwroot folder and can be accessed as if the content exists in your root folder. The default folder can be changed via WebHostBuilder in Program.cs using following code.
Static files can also be served from folders outside wwwroot by passing in StaticFileOptions to middleware and setting a FileProvider and RequestPath. This is useful when you want authorized access to files e.g. by returning FileResult action result from a secure controller.
Source Code
GitHub