Asp.Net Core入门之静态文件
静态文件(css,js,html等类型文件)通常位于 web根目录下,而ASP.Net Core框架默认内容根目录下的wwwroot文件夹为web根目录。这里简单解释下内容根目录:实际就是指包含可执行程序exe,程序集dll,配置文件json,xml等的文件目录.
1.访问web根目录静态文件
正常情况下,静态文件是无法直接访问的,需要我们添加如下静态文件的中间件,这是框架内置自带的。
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseStaticFiles();
}
然后我们就可通过web根目录的相关路径访问静态文件。例如,Web 应用程序项目模板包含 wwwroot 文件夹中的多个文件夹 :
- wwwroot
- css
- images
- js
然后就可以通过如下格式的URL:https://localhost:5001/images/123.jpg 来访问静态文件。
2.访问web根目录之外的静态文件
有些时候,可能有些静态文件我们并不是放在web根目录下面的。例如如下一个目录层次结构,其中要提供的静态文件位于 Web 根目录之外:
- wwwroot
- css
- images
- js
- Content
- images
- img.jpg
- images
如果通过URL:https://localhost:5001/Content/images/img.jpg是无法访问的,这个时候我们就需要额外的指定静态文件路径:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//wwroot目录下静态文件
app.UseStaticFiles();
//wwwroot之外的静态文件
app.UseStaticFiles(new StaticFileOptions
{
//指定实际物理路径
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"Content/images")),
//设置URL请求的文件路径
RequestPath = new Microsoft.AspNetCore.Http.PathString("/MyStaticFiles")
});
}
然后就可以通过如下格式的URL:https://localhost:5001/MyStaticFiles/img.jpg 来访问静态文件。
3.提供默认文件
UseDefaultFiles中间件用于启用默认文件的功能,例如我们打开一个网站只输入网站地址,就会自动跳出网站首页。这里的网站首页实际就相当于一个默认文件。
ASP.Net Core为我们简化了默认文件的搜索功能,我们只需要添加中间件即可。
public void Configure(IApplicationBuilder app)
{
app.UseDefaultFiles();
app.UseStaticFiles();
}
要提供默认文件,必须在 UseStaticFiles 前调用 UseDefaultFiles。 UseDefaultFiles 实际上用于重写 URL,不提供文件。 通过 UseStaticFiles 启用静态文件中间件来提供文件。
UseDefaultFiles 默认支持以下几种类型文件:
- default.htm
- default.html
- index.htm
- index.html
当然,框架也支持自定义默认文件,感兴趣的同学可以研究一下。
例如如下一个目录层次结构:
- wwwroot
- Index.html
- css
- images
- js
通过URL:https://localhost:5001/访问时,会自动跳转到并打开Index.html页面
4.启用目录浏览功能
出于安全考虑,目录浏览默认处于禁用状态,需通过添加UseDirectoryBrowser中间件的方式开启。
public void Configure(IApplicationBuilder app)
{
//默认文件
app.UseDefaultFiles();
//静态文件
app.UseStaticFiles();
//目录浏览
app.UseDirectoryBrowser();
}
另外,需要注册目录浏览的服务
public void ConfigureServices(IServiceCollection services)
{
services.AddDirectoryBrowser();
}
例如如下一个目录层次结构:
wwwroot
- 123.jpg
- 234.jpg
通过URL:https://localhost:5001/访问时,由于wwwroot根目录下不存在默认文件,所以会打开文件目录。

5.UseFileServer
UseFileServer 结合了 UseStaticFiles、UseDefaultFiles 和 UseDirectoryBrowser(可选)的功能。
例如以下目录层次结构:
- wwwroot
- 123.jpg
- 234.jpg
- Content
- images
- 234.jpg
- images
以下代码启用静态文件、默认文件和及 MyStaticFiles 的目录浏览:
public void Configure(IApplicationBuilder app)
{
//静态文件
app.UseStaticFiles(); app.UseFileServer(new FileServerOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(Directory.GetCurrentDirectory(), "Content")),
RequestPath = "/MyStaticFiles",
//启用目录
EnableDirectoryBrowsing = true
});
}
EnableDirectoryBrowsing 属性值为 true 时必须注册服务 AddDirectoryBrowser:
public void ConfigureServices(IServiceCollection services)
{
services.AddDirectoryBrowser();
}
通过URL:https://localhost:5001/MyStaticFiles/访问时,由于目录下不存在默认文件,所以会打开文件目录。

Asp.Net Core入门之静态文件的更多相关文章
- ASP.NET Core 1.1 静态文件、路由、自定义中间件、身份验证简介
概述 之前写过一篇关于<ASP.NET Core 1.0 静态文件.路由.自定义中间件.身份验证简介>的文章,主要介绍了ASP.NET Core中StaticFile.Middleware ...
- ASP.NET Core应用针对静态文件请求的处理[5]: DefaultFilesMiddleware中间件如何显示默认页面
DefaultFilesMiddleware中间件的目的在于将目标目录下的默认文件作为响应内容.我们知道,如果直接请求的就是这个默认文件,那么前面介绍的StaticFileMiddleware中间件会 ...
- ASP.NET Core应用针对静态文件请求的处理[4]: DirectoryBrowserMiddleware中间件如何呈现目录结构
和StaticFileMiddleware中间件一样,DirectoryBrowserMiddleware中间本质上还是定义了一个请求地址与某个物理目录之间的映射关系,而目标目录体现为一个FilePr ...
- ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求
我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的介绍,从提供的功能和特性的角度对这个名为StaticFileMidd ...
- ASP.NET Core应用针对静态文件请求的处理[2]: 条件请求与区间请求
通过调用ApplicationBuilder的扩展方法UseStaticFiles注册的StaticFileMiddleware中间件帮助我们处理针对文件的请求.对于StaticFileMiddlew ...
- ASP.NET Core应用针对静态文件请求的处理[1]: 以Web的形式发布静态文件
虽然ASP.NET Core是一款"动态"的Web服务端框架,但是在很多情况下都需要处理针对静态文件的请求,最为常见的就是这对JavaScript脚本文件.CSS样式文件和图片文件 ...
- (5)ASP.NET Core 中的静态文件
1.前言 当我们创建Core项目的时候,Web根目录下会有个wwwroot文件目录,wwwroot文件目录里面默认有HTML.CSS.IMG.JavaScript等文件,而这些文件都是Core提供给客 ...
- asp.net core 系列之静态文件
这篇讲解asp.net core中的静态文件(大致翻译于官网). 静态文件,例如HTML,CSS, images和JavaScript. 要想直接被客户端访问,需要做一些配置. 一.Serve sta ...
- Asp.Net Core 中的静态文件
Asp.Net Core 中的静态文件 在这节中我们将讨论如何使 ASP.NET Core 应用程序,支持静态文件,如 HTML,图像,CSS 和 JavaScript 文件. 静态文件 默认情况下, ...
随机推荐
- 不可不知的 7 个 JDK 命令
这篇文章主要来介绍下 JDK 内置的命令,话不多说,让我们开始吧! javap 使用 javap 可以查看 Java 字节码反编译的源文件,javap 的命令格式如下: 下面来演示下用 javap - ...
- 剑指offer——数据结构
技术面重点:数组.字符串.链表.树.栈以及队列.
- 校园网络 luogu P2812 (又是强联通)
题目传送门!(luogu) 首先考虑问题一 不难想到,如果有一个学校作为终端机,那么跟其处于同一个强联通中的所有学校就可以不用作为终端机了. 那么,问题一也就迎刃而解了:找到所有入度为0的缩点.因为这 ...
- Java中的集合(六)继承Collection的Set接口
Java中的集合(六)继承Collection的Set接口 一.Set接口的简介 Set接口和List接口都是继承自Collection接口,它与Collection接口中功能基本一致,并没有对Col ...
- pandas的loc与iloc
1. loc是用标签(也就是行名和列名)来查找,标签默认是数字,但也可以通过index参数指定为字符型等其他的类型. 格式是df.loc[行名,列名],如果列标签没有给出,则默认为查找指定行标签的所有 ...
- 加速国内Github代码下载速度
标题: 加速国内Github代码下载速度 作者: 梦幻之心星 347369787@QQ.com 标签: [Github, 代码, 下载] 目录: 代码 日期: 2019-10-27 目录 前提说明 解 ...
- Beta冲刺 —— 5.28
这个作业属于哪个课程 软件工程 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.会议内容 1.组员一起学习Git分支管 ...
- Redis 的原理与应用场景及数据库关系
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一. Redis 是什么? Redis是一个开源的使用ANSIC语言编写.支持网络.单进程单线程.可基于 ...
- 金融SaaS平台之构思篇
背景介绍 从事过金融服务行业的同学们都知道,业务系统是非常之多的,核心的就有估值.交易.TA.资讯系统,其他类似产品生命周期系统.投后分析系统等待,而且各个业务系统的逻辑非常之复杂,所以一般金融机构都 ...
- Java 第十一届 蓝桥杯 省模拟赛 字母重新排列
字母重新排列 题目 问题描述 将LANQIAO中的字母重新排列,可以得到不同的单词,如LANQIAO.AAILNOQ等,注意这7个字母都要被用上,单词不一定有具体的英文意义. 请问,总共能排列如多少个 ...