如何在ASP。网络核心中使用静态文件

  介绍

今天就跟大家聊聊有关如何在ASP。网络核心中使用静态文件,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

<强>前言

静态文件(HTML、CSS图片和Javascript之类的资源)会被ASP。网络核心应用直接提供给客户端。

静态文件通常位于网站根目录(web根)& lt; content-root>/wwwroot文件夹下。通常会把项目的当前目录设置为上下文根,这样项目的web根就可以在开发阶段被明确。

public  static  IWebHostBuilder  CreateWebHostBuilder (string [], args),=比;   WebHost.CreateDefaultBuilder才能(args)   .UseContentRoot才能(Directory.GetCurrentDirectory()),//设置当前目录   .UseStartup<才能;Startup> ();

静态文件能够被保存在网站根目录下的任意文件夹内,并通过相对根的路径来访问。使用vs创建一个默认的网络应用程序时,在wwwroot目录下会生成几个文件夹:css图像,js。如果压迫访问图片目录下的图片:

http:///iamges/文件名

https://localhost: 44303/iamges/文件名

要想使用静态文件服务,必须配置中间件,把静态文件中间件加入到管道。静态文件一般会默认配置,在配置方法中调用<代码> app.UseStaticFiles()

<代码> app.UseStaticFiles() 使得Web根(默认为wwwroot)下的文件可以被访问。同时可以通过UseStaticFiles方法将其他目录下的内容也可以向外提供:

假如wwwroot外面有一个MyStaticFiles文件夹,要访问文件夹里面的资源测试。png:

public  void 配置(IApplicationBuilder 应用,IHostingEnvironment  env,, ILoggerFactory  loggerFactory)   ,{      app.UseHttpsRedirection才能();   app.UseStaticFiles才能();   app.UseStaticFiles才能(new  StaticFileOptions (), {   时间=FileProvider 才能;new  PhysicalFileProvider (   ,,Path.Combine (Directory.GetCurrentDirectory (),, @" MyStaticFiles")),,//用于定位资源的文件系统   时间=RequestPath 才能;new  PathString (“/StaticFiles"),//请求地址   ,,});      以前,}

可以通过访问

http:///StaticFiles/测试。png

https://localhost: 44303/StaticFiles/test.png

<强> 1。静态文件授权

静态文件组件默认不提供授权检查。任何通过静态文件中间件访问的文件都是公开的。要想给文件授权,可以将文件保存在wwwroot之外,并将目录设置为可被静态文件中间件能够访问,同时通过一个控制器动作来访问文件,在行动中授权后返回FileResult。

<强> 2。目录浏览

目录浏览允许网站用户看到指定目录下的目录和文件列表。基于安全考虑,默认情况下是禁止目录访问功能。在<代码>启动。配置> public  void 配置(IApplicationBuilder 应用,IHostingEnvironment  env,, ILoggerFactory  loggerFactory)   ,{   app.UseStaticFiles才能();      app.UseDirectoryBrowser才能(new  DirectoryBrowserOptions (), {   时间=FileProvider 才能;new  PhysicalFileProvider (   ,,Path.Combine (Directory.GetCurrentDirectory (), @" wwwroot \ images")),   时间=RequestPath 才能;new  PathString (“/MyImages"),//如果不指定RequestPath,会将PhysicalFileProvider中的路径参数作为默认文件夹,替换掉wwwroot   });,}

然后在<代码> Startup.CongigureServices>

这样就可以通过访问http:///模板浏览wwwroot/图像文件夹中的目录,但是不能访问文件:

如何在ASP。净核心中使用静态文件

要想访问具体文件需要调用UseStaticFiles配置:

public  void 配置(IApplicationBuilder 应用,IHostingEnvironment  env,, ILoggerFactory  loggerFactory)   ,{   app.UseStaticFiles才能();   app.UseStaticFiles才能(new  StaticFileOptions (), {   时间=FileProvider 才能;new  PhysicalFileProvider (   ,,Path.Combine (Directory.GetCurrentDirectory (),, @" wwwroot \ images")),,//用于定位资源的文件系统   时间=RequestPath 才能;new  PathString (“/MyImages")   ,,});   app.UseDirectoryBrowser才能(new  DirectoryBrowserOptions (), {   时间=FileProvider 才能;new  PhysicalFileProvider (   ,,Path.Combine (Directory.GetCurrentDirectory (), @" wwwroot \ images")),   时间=RequestPath 才能;new  PathString (“/MyImages")   ,,});      以前,}

如何在ASP。网络核心中使用静态文件