asp。net核心静态文件资源的深入讲解

  

  

对静态资源的简单的一个概况,在《重新整理。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} ");   }   }   );      

可以设置一些缓存。

  

 asp。net核心静态文件资源的深入讲解

  

静态文件授权

  

官方倒是提供了两种方法。

  

一种是,让静态文件路由放到权限之后。

        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 ();      

效果:   

 asp。net核心静态文件资源的深入讲解

  

这种方式呢,一般只是在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(可选)的功能。

  

asp。net核心静态文件资源的深入讲解