52ABP

  1. HTML、图像、CSS 和 JavaScript 这些都属于静态文件
  2. ASP.NET Core 程序要支持静态文件,就必须添加静态文件中间件 UseStaticFiles
  3. 如果要提供默认文档还得用到 UseDefaultFiles 中间件
  4. 参考:Static files in ASP.NET Core

UseFileServer

UseFileServer 一个顶三个:

  1. UseDefaultFiles:定义默认文件映射(即使用 index.html default.html 等为默认为文件)
  2. UseDirectoryBrowser:启用目录浏览
  3. UseStaticFiles:启用静态文件

UseFileServer 源码:

  1. /// <summary>
  2. /// Enable all static file middleware with the given options
  3. /// </summary>
  4. /// <param name="app"></param>
  5. /// <param name="options"></param>
  6. /// <returns></returns>
  7. public static IApplicationBuilder UseFileServer(
  8. this IApplicationBuilder app,
  9. FileServerOptions options)
  10. {
  11. if (app == null)
  12. throw new ArgumentNullException(nameof (app));
  13. if (options == null)
  14. throw new ArgumentNullException(nameof (options));
  15. if (options.EnableDefaultFiles)
  16. app.UseDefaultFiles(options.DefaultFilesOptions);
  17. if (options.EnableDirectoryBrowsing)
  18. app.UseDirectoryBrowser(options.DirectoryBrowserOptions);
  19. return app.UseStaticFiles(options.StaticFileOptions);
  20. }

总结

  • ASP.NET Core 默认不支持静态文件服务
  • 默认的静态服务文件夹为 wwwroot
  • 要使用静态文件,必须使用 UseStaticFiles() 中间件
  • 要定义默认文件,必须使用 UseDefaultFiles() 中间件
    • 默认支持的文件列表:
      • Index.htm
      • Index.html
      • Default.htm
      • Default.html
  • UseDefaultFiles() 必须注册在 UseStaticFiles() 前面
  • UseFileServer 结合了 UseStaticFiles,UseDefaultFiles 和 UseDirectoryBrowser 中间件的功能

注:实际项目中很少使用 UseFileServer,因为一般不会用到 UseDirectoryBrowser。虽然 UseDirectoryBrowser 需要配置了才会将本地文件暴露出去,但如无必要还是不用的好。