今天就跟大家聊聊有关如何在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://
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。目录浏览强>
目录浏览允许网站用户看到指定目录下的目录和文件列表。基于安全考虑,默认情况下是禁止目录访问功能。在<代码>启动。配置> 代码中调用UseDirectoryBrowser扩展方法可以开启网络应用目录浏览:
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> 代码中调用AddDirectoryBrowser扩展方法。
这样就可以通过访问http://
/模板浏览wwwroot/图像文件夹中的目录,但是不能访问文件:
要想访问具体文件需要调用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。网络核心中使用静态文件