静态文件
添加静态文件服务
静态文件通常位于 Web root(<content-root>/wwwroot)文件夹下
为了能够启用静态文件服务,必须配置中间件,把静态中间件添加到管道内.静态文件中间件在Microsoft.AspNetCore.StaticFiles包中,调用app.UseStaticFiles();使web root(wwwroot)下文件可以被访问
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseStaticFiles();
}
访问web root外部静态文件
也可以将静态文件放在web root外部,但是如果想要访问web root外部静态文件,必须添加一个中间件到管道内
public void Confiugre(IApplicationBuilder app,IHostingEnvironment env)
{
app.UseStaticFiles();
//访问web root外部静态文件中间件
app.UseStaticFiles(new StaticFileOptions{
FileProvider = new new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"img")),//实际地址
RequestPath = new Microsoft.AspNetCore.Http.PathString("/staticFile")//访问地址
});
}
我们就可以使用以上地址访问 web root外部静态文件
允许直接浏览目录
目录浏览允许网站用户看到指定目录下的目录和文件列表。基于安全考虑,默认情况是禁用目录访问功能的。在Startup.Configure中调用UseDirectoryBrowser扩展方法开启网络应用目录浏览
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStaticFiles();
app.UseDirectoryBrowser(new DirectoryBrowserOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"img")),//实际文件目录
RequestPath = new Microsoft.AspNetCore.Http.PathString("/staticFile") //访问地址
});
}
并且可以通过从Startup.ConfigureServices调用AddDirectory扩展方法来增加所需服务
public void ConfigureServices(IServiceCollection services)
{
services.AddDirectoryBrowser();
}
UseFileServer
UseFileServer包含了UseStaticFiles,UseDefaultFiles和UseDirectoryBrowser的功能。
app.UseFileServer()
上面代码启用了静态文件和默认文件,但不允许直接访问目录
app.UseFileServer(enableDirectoryBrowsing: true);
上面代码启用了静态文件,默认文件和目录浏览功能
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseFileServer(new FileServerOptions
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"img")),
RequestPath = new Microsoft.AspNetCore.Http.PathString("/staticFile"),
EnableDirectoryBrowsing=true//启用目录浏览
});
}
上面代码实现了访问web root外静态文件