Introduction
In this tutorial you’ll set up and deploy a production-ready ASP.NET Core application with Static files are stored within the project's web root directory.
How it works
Remember the relationships.
OS/ ubuntu server 18.04-x64 Solution Folder
asp.net core项目静态文件服务由三·大部分组成
app.UseStaticFiles(): StaticFileMiddleware中间件,提供wwwroot目录下的静态文件服务。提供了StaticFileOptions()
app.UseDefaultFiles():Serve default documents
Setting a default page provides visitors a starting point on a site. To serve a default page from wwwroot without a fully qualified URI
app.UseDirectoryBrowser
app.UseFileServer() :提供了 FileServerOptions()
app.UseStaticFiles()
创建一个asp.net core 项目的静态文件一般是放在项目目录下wwwroot文件夹,文件目录如下。
如何将静态文件注入到项目中
在startup.cs文件的Configure方法中写入:
app.UseStaticFiles();
1.静态文件由app.UseStaticFiles()中间件提供。
2.静态文件可以由new StaticFileOptions()改变默认规则。StaticFileOptions()-Options for configuring the StaticFileMiddleware
包括:
1.更改缺省目录位置:
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"MyStaticFiles"))
2.更改可下载文件类型
这方法的默认路径正是上面所说的wwwroot目录。
如何使用自己的文件路径
在startup.cs文件的Configure方法中写入:
app.UseStaticFiles(new StaticFileOptions(){
FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), @"MyStaticFiles")),
RequestPath = new PathString("/StaticFiles")});
这时候我们运行一下然后输入链接看到以下效果
这时候我们知道FileProvider是指定路径,RequestPath是将对外的路径重写。
即可用 StaticFiles来访问而不是MyStaticFiles。
我觉得这样地址重写的好处是可以保证项目的结构不被暴露,有一定的安全性吧。
app.UseDefaultFiles()
app.UseDirectoryBrowser()
如何浏览目录的文件与文件夹
在出于安全问题默认情况下是不允许浏览目录的文件和文件夹的,但是如果你需要浏览的话可以用以下方法。
首先要在startup.cs文件的ConfigureServices方法中加入:
services.AddDirectoryBrowser();
然后在startup.cs文件的Configure方法中写入:
app.UseDirectoryBrowser(new DirectoryBrowserOptions(){
FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\images")),
RequestPath = new PathString("/wwwroot/images")});
然后可以看到以下效果
这样我们就可以看到该目录下的东西了。一般来说还是使用默认的比较好。
app.UseFileServer(new FileServerOptions())
UseFileServer combines the functionality of UseStaticFiles, UseDefaultFiles, and UseDirectoryBrowser.
【非本站原创】原文:http://www.cnblogs.com/JinJi-Jary/p/5640496.html.
useful links:
ASP.NET Core静态文件处理UseStaticFiles源码探究
app.UseFileServer()
https://jakeydocs.readthedocs.io/en/latest/fundamentals/static-files.html#usefileserver