静态文件存储在项目的 Web 根目录中。 默认目录是 <content_root>/wwwroot,但可通过 UseWebRoot方法更改目录。
提供 Web 根目录内的文件
public void Configure(IApplicationBuilder app){
app.UseStaticFiles();
}
无参数使用<content_root>/wwwroot作为根目录
基于Url路径的文件目录
public void Configure (IApplicationBuilder app) {
// 使用文件 wwwroot 作为文件搜索目录
app.UseStaticFiles ();
// 将木 MyStaticFiles 作为 /StaticFiles 开头 url 的文件搜索目录
app.UseStaticFiles (
new StaticFileOptions {
FileProvider = new PhysicalFileProvider (
Path.Combine (Directory.GetCurrentDirectory (), "MyStaticFiles")
),
RequestPath = "/StaticFiles"
});
}
以上使用的两个静态文件搜索目录,如果 第一个目录 找不到,将进入 第二个目录 (前提是url以/StaticFiles开头)
设置 HTTP 响应标头
StaticFileOptions 对象的OnPrepareResponse事件运行对响应进行处理
public void Configure (IApplicationBuilder app) {
app.UseStaticFiles (new StaticFileOptions {
OnPrepareResponse = ctx => {
ctx.Context.Response.Headers.Append ("Cache-Control", "public,max-age=600");
}
});
}
启用目录浏览
通过目录浏览,Web 应用的用户可查看目录列表和指定目录中的文件。 目录浏览默认处于禁用状态,如下代码开启
添加中间件:
public void Configure (IApplicationBuilder app) {
// 以 /MyImages 开头的url,如果可以匹配到目录,则返回目录
app.UseDirectoryBrowser (new DirectoryBrowserOptions {
FileProvider = new PhysicalFileProvider (
Path.Combine (Directory.GetCurrentDirectory (), "wwwroot", "images")
),
RequestPath = "/MyImages"
});
}
注册服务:
public void ConfigureServices(IServiceCollection services){
services.AddDirectoryBrowser();
}
上述代码允许使用 URL http://<server_address>/MyImages 浏览 wwwroot/images 文件夹的目录,并链接到每个文件和文件夹: