- HTML、图像、CSS 和 JavaScript 这些都属于静态文件
- ASP.NET Core 程序要支持静态文件,就必须添加静态文件中间件 UseStaticFiles
- 如果要提供默认文档还得用到 UseDefaultFiles 中间件
- 参考:Static files in ASP.NET Core
UseFileServer
UseFileServer 一个顶三个:
- UseDefaultFiles:定义默认文件映射(即使用 index.html default.html 等为默认为文件)
- UseDirectoryBrowser:启用目录浏览
- UseStaticFiles:启用静态文件
UseFileServer 源码:
/// <summary>
/// Enable all static file middleware with the given options
/// </summary>
/// <param name="app"></param>
/// <param name="options"></param>
/// <returns></returns>
public static IApplicationBuilder UseFileServer(
this IApplicationBuilder app,
FileServerOptions options)
{
if (app == null)
throw new ArgumentNullException(nameof (app));
if (options == null)
throw new ArgumentNullException(nameof (options));
if (options.EnableDefaultFiles)
app.UseDefaultFiles(options.DefaultFilesOptions);
if (options.EnableDirectoryBrowsing)
app.UseDirectoryBrowser(options.DirectoryBrowserOptions);
return app.UseStaticFiles(options.StaticFileOptions);
}
总结
- ASP.NET Core 默认不支持静态文件服务
- 默认的静态服务文件夹为 wwwroot
- 要使用静态文件,必须使用 UseStaticFiles() 中间件
- 要定义默认文件,必须使用 UseDefaultFiles() 中间件
- 默认支持的文件列表:
- Index.htm
- Index.html
- Default.htm
- Default.html
- 默认支持的文件列表:
- UseDefaultFiles() 必须注册在 UseStaticFiles() 前面
- UseFileServer 结合了 UseStaticFiles,UseDefaultFiles 和 UseDirectoryBrowser 中间件的功能
注:实际项目中很少使用 UseFileServer,因为一般不会用到 UseDirectoryBrowser。虽然 UseDirectoryBrowser 需要配置了才会将本地文件暴露出去,但如无必要还是不用的好。