这样入门asp.net core 之 静态文件
2018-03-25 15:55
776 查看
本文章主要说明asp.net core中静态资源处理方案:
一、静态文件服务
首先明确contentRoot和webroot这两个概念
- contentRoot:web的项目文件夹,其中包含webroot和其他bin等其他文件夹
- webroot:webroot是站点文件夹,可用url访问的文件夹。默认为:"contentroot/wwwroot"
- 实现代码如下
Program中的代码
public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) //设置contentroot .UseWebRoot("mywwwroot") //设置webroot .UseUrls("http://*:5000") //其他电脑可以用ip地址访问 .Build();
StartUp中的代码
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseStaticFiles();//开启静态文件访问 //自定义静态文件访问 app.UseStaticFiles(new StaticFileOptions(){ FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "mystatic")), RequestPath = new PathString("/sam/static") }); //配置mvc app.UseMvc(routers=>{ routers.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"); }); }
效果图下图:
1.1 目录浏览
实现代码如下:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { app.UseDirectoryBrowser(new DirectoryBrowserOptions(){ FileProvider = new PhysicalFileProvider(Path.Combine(env.ContentRootPath, "Controllers")), RequestPath = new PathString("/controller") }); }
1.2 默认文档
app.UseDefaultFiles方法开启默认访问的配置,配置项用DefaultFilesOption类表示,代码如下:
public void Configure(IApplicationBuilder app, IHostingEnvironment env) { //默认文件 DefaultFilesOptions defaultFiles = new DefaultFilesOptions(); defaultFiles.DefaultFileNames.Clear(); defaultFiles.DefaultFileNames.Add("myindex.html"); app.UseDefaultFiles(defaultFiles); app.UseStaticFiles(); //开启静态文件访问 }
注意此配置一定要在所有Use之前,否则设置不生效
1.3 UseFileServer
UserFileServer包含了UseStaticFiles, UseDefaultFiles, UserDirectoryBrowser的功能
app.UseFileServer(new FileServerOptions(){ EnableDefaultFiles, //是否开启默认文档 EnableDirectoryBrowsing, //是否开启目录浏览 DefaultFilesOptions, //默认文件设置 StaticFileOptions, //静态资源访问设置 DirectoryBrowserOptions, //目录浏览设置 });
二、静态文件授权
静态模块是不对文件进行权限检查的,包含wwwroot下的文件和文件夹。如果相进行权限控制,可以使用action返回一个FileResult来实现:
private string basePath = Common.Uitls.HostingEnvironment.ContentRootPath; public FileResult Index(int id){ if(id == 1){ return new PhysicalFileResult(Path.Combine(basePath, "aufolder","author.html"), "text/html"); } return new PhysicalFileResult(Path.Combine(basePath, "error.html"), "text/html");; }
三、FileExtensionContentTypeProvider类的使用
此类包含一个将文件扩展名映射到MIME内容类型的集合,代码如下:
FileExtensionContentTypeProvider provider=new FileExtensionContentTypeProvider(); provider.Mappings.Add(".sam", "text/plain"); //自定义静态文件访问 app.UseStaticFiles(new StaticFileOptions(){ FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "mystatic")), RequestPath = new PathString("/sam/static"), ContentTypeProvider = provider });
- FileExtensionContentTypeProvider类与UseStaticFiles关联使用
- 扩展名以 "." 开头。
- 运行结果如下:
相关文章推荐
- ASP.NET Core使用静态文件、目录游览与MIME类型管理
- ASP.NET Core 1.0 静态文件、路由、自定义中间件、身份验证简介
- IT咨询顾问:一次吐血的项目救火 java或判断优化小技巧 asp.net core Session的测试使用心得 【.NET架构】BIM软件架构02:Web管控平台后台架构 NetCore入门篇:(十一)NetCore项目读取配置文件appsettings.json 使用LINQ生成Where的SQL语句 js_jquery_创建cookie有效期问题_时区问题
- 细说ASP.NET Core静态文件的缓存方式
- ASP.NET Core 1.0基础之静态文件处理
- 细说ASP.NET Core静态文件的缓存方式
- asp.net core轻松入门之MVC中Options读取配置文件
- asp.net core 之静态文件目录的操作
- ASP.NET Core 2 学习笔记(五)静态文件
- ASP.NET CORE入门之读取Json配置文件
- asp.net core轻松入门之MVC中Options读取配置文件
- 细说ASP.NET Core静态文件的缓存方式
- ASP.NET CORE入门之读取Json配置文件
- ASP.NET Core静态文件使用教程(9)
- asp.net core 之静态文件目录的操作
- ASP.NET Core轻松入门Bind读取配置文件到C#实例
- Asp.Net Core 静态文件目录操作
- ASP.NET Core轻松入门Bind读取配置文件到C#实例
- ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求
- asp.net core 教程(七)-异常处理、静态文件