什么是静态文件?
1:如HTML,CSS,图像,JS文件,是.net core应用程序可以直接向客户端提供的资产。
2:静态文件通常位于web root(内容根目录或Web根目录)文件夹中,一般是将内容根目录设置为当前目录,以便于web root在开发中找到你的项目。
3:在.net core中如果你要使用静态文件,你必须在启动类管道中配置该中间件
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
}
4:假如需要访问WebRoot以外的同级静态文件,则需要重新配置静态文件中间件
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), @"你的文件夹名称")),
RequestPath = new PathString("/重新配置的文件夹访问名称") });
}
请求http://<app>/StaticFiles/test.png
将服务于test.png文件。
StaticFileOptions()
可以设置响应头。例如,以下代码从wwwroot文件夹设置静态文件服务,并设置Cache-Control
标题使其可公开缓存10分钟(600秒):
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles(new StaticFileOptions()
{
OnPrepareResponse = ctx => { ctx.Context.Response.Headers.Append("Cache-Control", "public,max-age=600"); }
});
}
静态文件授权
静态文件模块提供没有授权检查。它所提供的任何文件,包括wwwroot下的文件都是公开的。
如果想要授权访问只能通过外部存储它们wwwroot的任何目录访问静态文件中间件和通过控制器操作来硬编码授权访问,通过授权则返回FileResult。
什么是Web根目录和内容根目录?
内容根目录是应用程序使用的任何内容的基本路径,例如 视图,Razor页面和静态资产。
Web根目录主要是包含公共静态资源(如CSS,JavaScript和图像文件)的项目中的目录。