对静态资源的简单的一个概况,在《重新整理。net核心计1400篇》系列后面会深入。
我们在加入中间件是这样写的:
app.UseStaticFiles ();
默认是给wwwroot提供资源。
那么我访问https://localhost: 44330/js/网站。js资源,就可以访问到。
//请参阅文档:https://docs.microsoft.com/aspnet/core/client-side/bundling-and-minification//详情> app.UseStaticFiles(新StaticFileOptions { FileProvider=new PhysicalFileProvider (Path.Combine (env。ContentRootPath“静态”)), RequestPath="/静态” });
上面在根目录下的静态建立路由,路由路径静态为标识。
访问:
https://localhost: 44330/静态/图片/index.jpg
就能看到一张图片了。
同样再次访问,https://localhost: 44330/js/网站。js依然可以访问,看了这个wwwroot是一个钉子户,无论如何添加还是存在的。
常量字符串cacheMaxAge=" 60480 "; app.UseHttpsRedirection (); app.UseStaticFiles(新StaticFileOptions { FileProvider=new PhysicalFileProvider (Path.Combine (env。ContentRootPath“静态”)), RequestPath="/静态”, OnPrepareResponse=ctx=比;{ ctx.Context.Response.Headers。附加(cache - control,美元“公众信息={cacheMaxAge} "); } });
可以设置一些缓存。
静态文件授权
官方倒是提供了两种方法。
一种是,让静态文件路由放到权限之后。
app.UseAuthentication (); app.UseAuthorization (); app.UseStaticFiles(新StaticFileOptions { FileProvider=new PhysicalFileProvider ( Path.Combine (env。ContentRootPath“静态”)), RequestPath="/静态” });
另一种比较自定义高:
(授权) 公共IActionResult BannerImage () { var filePath=Path.Combine ( _env。ContentRootPath”MyStaticFiles”、“图像”、“red-rose.jpg”); 返回PhysicalFile (filePath“图像/jpeg”); }
可以根据参数做一些逻辑变化。
但是这些方式比较影响性能,一般来说静态文件是开放的,而用户上传的文件是通过加密的,放在存储服务器上。
当然小型项目,可以用用。
<强>静态文件目录强>
配置中添加:
app.UseDirectoryBrowser(新DirectoryBrowserOptions { FileProvider=new PhysicalFileProvider (Path.Combine (env.ContentRootPath“静态”)), RequestPath="/静态” });
这个中间件注入的位置是应该在UseRouting之前的,同样是性能问题。
然后在ConfigureServices中添加:
services.AddDirectoryBrowser ();
效果:
这种方式呢,一般只是在dev环境下打开,真正的生产环境由于安全问题就不打开的。
<强>默认文档强>
app.UseDefaultFiles ();app.UseStaticFiles ();
app.UseStaticFiles ();才是真正的路由。
app.UseDefaultFiles ();只是说提供一些参数,比如配置下面这些为默认项。
default.htm default.html 你可以 index . html
其实是这样一个过程,app.UseStaticFiles()如果没有找到相应的路,由那么应该给下一个中间件。
如果调用了app.UseDefaultFiles(),那么会去找是否存在默认项,默认是去wwwroot下寻找上述的默认项。
默认文档可以进行修改:
var=new DefaultFilesOptions选项(); options.DefaultFileNames.Clear (); options.DefaultFileNames.Add (“mydefault.html”); app.UseDefaultFiles(选项);app.UseStaticFiles ();
UseFileServer结合了UseStaticFiles, UseDefaultFiles和UseDirectoryBrowser(可选)的功能。