ASP.NET5 静态文件
静态文件,包括HTML文件,CSS文件,图像文件和JavaScript文件,它是一个应用里所包含的资源。
1. 提供静态文件
默认的,静态文件存储在你的webroot目录下面,webroot的路径定义在project.json里面
"webroot": "wwwroot"
静态文件可以被存储在webroot下面的任何目录当中,以一个相对目录获取到。在一个默认的web应用程序当中,在webroot下面默认有三个目录css, images和js. 要获取图像路径,格式如下:
http://<yourApp>/images/<imageFileName>
为了应用静态文件,你必须在Configure方法中注册
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseStaticFiles();
}
如果你有不在webroot目录下的静态文件需要添加,如何做呢
假如文件目录如下:
* wwwroot
*css
*images
*....
*MyStaticFiles
* test.png
要获取test.png,如何做呢,我们需要在Configure添加如下的代码:
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(@"D:\Source\WebApplication1\src\WebApplciation1\MyStaticFiles"),
RequestPath = new PathString("/StaticFiles")
});
这样,用户就可以通过http://<yourApp>/StaticFiles/test.png来获取test.png文件了.
2. 使目录可预览
上当浏览可以使用户浏览你的目录和子目录信息,默认的这个功能是关闭的,要使其打开,可以在COnfigure里增加如下代码:
app.UseDirectoryBrowser();
同样的,webroot目录以外的静态资源要被浏览,做如下配置:
app.UseDirectoryBrowser(new DirectoryBrowserOptions()
{
FileProvider = new PhysicalFileProvider(@"..."),
RequestPath = new PathString("/StaticFiles")
});
你可以通过http://<yourApp>/StaticFiles去浏览.
3. 提供默认的文件
为了不输入全路径而要显示默认的文件,可以通过UseDefaultFiles扩展方法来扩展。注意,你还必须调用UseStaticFIles,这是因为UseDefaultFile是URL重写,他实际上不提供文件。
app.UseDefaultFiles();
app.UseStaticFiles();
如果你用了UseDefaultFiles, 中间件会找如下的页面作为默认页面。
*default.htm
*default.html
*index.htm
*index.html
要定义自己的默认文件,代码如下:
DefaultFileOptions options = new DefaultFileOptions();
options.DefaultFileNames.Clear();
options.DefaultFileNames.Add("mydefault.html");
app.UseDefaultFiles(options);
app.UseStaticFiles();
如果你想用一个默认的页面在webroot之外,你也必须再调用一下UseStaticFiles, UseDefaultFiles方法传参数进去。这样比较麻烦,可以用UseFileServer代替
4. UseFileServer方法
UseFileServer方法可以合并UseStaticFiles, UseDefaultFiles和UseDirectoryBrowser方法。
app.UseFileServer(); 或者 app.UseFileServer(enableDirectoryBrowsing: true);
你要在webroot以处定义你的静态文件,代码如下:
app.UserFileServer(new FileServerOptions()
{
FileProvider = new PhysicalFileProvider(@"D:\Source\WebApplication1\src\WebApplication1\MyStaticFiles"),
RequestPath = new PathString("/StaticFiles"),
EnableDirectoryBrowsing = true
});
5. Content types
ASP.NET提供了差不多400多个文件类型,如果你试图访问一个未知的文件类型,ASP.NET中间件不会提供这个文件。
例如有一个文件路径
* wwwroot
* images
*test.image
如果你访问http://<yourApp>/images/test.image, 你会得到一个404的错误,尽管这个文件实际上存在。你可以当开这个限制,如下所示:
app.UseStaticFiles(new StaticFileOptions
{
ServerUnknownFileTypes = true,
DefaultContentType = "image/png"
});
这样,如果用户浏览一个未定义的文件格式,浏览器会以一个图片的格式在渲染它。
如果你有很多的文件类型是ASP.NET不知道,该怎么做呢?FileExtensionContentTypeProvider类可以帮助你。代码如下:
var provider = new FileExtensionContentTypeProvider();
provider.Mappings.Add(".myapp", "application/x-msdownload");
app.UseStaticFiles(new StaticFileOptions{ ContentTypeProvider = provider});
这样,如果用户请求.myapp的文件,浏览器会下载该文件.
6. IIS
IIS有个本地的静态文件的模块,它独立于ASP.NET的静态文件,ASP.NET模块在IIS本地模块之前运行,在ASP.NET Beta7 , IIS 宿主改变了,如果ASP.NET不处理,IIS本地模块也不处理。如果要选择执行IIS本地的模块,需要执行如下代码:
app.RunIISPipeline();
注意:代码文件应该放在webroot之外,这样可以把静态文件和动态文件区分开来。
ASP.NET5 静态文件的更多相关文章
- ASP专栏——ASP生成静态文件(用于大量文章)
对于Web开发人员来说,生成静态文件这个概念并不陌生. 对于Web开发来说,如何能避免客户端访问时不停的查询数据库?现在比较常用的有两种方法,一种是使用缓存技术,将查询出来的结果缓存至缓存框架中,以后 ...
- ASP生成静态文件编码为UTF-8格式的HTML文件
一般在ASP环境下,运行动生静操作时都用到的是FSO,FSO是专门对文件进行操作的一个组件,FSO的编码属性只有三种,系统默认,Unicode,ASCII,并没有utf-8,所以一般中文系统上使用FS ...
- ASP.NET5 中静态文件的各种使用方式
所谓静态文件,包含HTML文件,css文件.图片文件和js文件等,他们是服务器直接读取到客户端的一些资源,在这篇文章中,我们将解释关于ASP.NET5和静态文件的一些内容. 服务端的静态文件 默认情况 ...
- ASP.NET Core 中文文档 第三章 原理(3)静态文件处理
原文:Working with Static Files 作者:Rick Anderson 翻译:刘怡(AlexLEWIS) 校对:谢炀(kiler398).许登洋(Seay).孟帅洋(书缘) 静态文 ...
- Asp .Net core 2 学习笔记(3) —— 静态文件
这个系列的初衷是便于自己总结与回顾,把笔记本上面的东西转移到这里,态度不由得谨慎许多,下面是我参考的资源: ASP.NET Core 中文文档目录 官方文档 记在这里的东西我会不断的完善丰满,对于文章 ...
- ASP.NET Core 1.0基础之静态文件处理
来源 这些HTML , CSS files, image files, 和JavaScript这些静态文件,是ASP.NET能够直接响应给客户端的.本文详述下ASP.NET和静态文件的关系. Serv ...
- ASP.NET Core应用针对静态文件请求的处理[5]: DefaultFilesMiddleware中间件如何显示默认页面
DefaultFilesMiddleware中间件的目的在于将目标目录下的默认文件作为响应内容.我们知道,如果直接请求的就是这个默认文件,那么前面介绍的StaticFileMiddleware中间件会 ...
- ASP.NET Core应用针对静态文件请求的处理[4]: DirectoryBrowserMiddleware中间件如何呈现目录结构
和StaticFileMiddleware中间件一样,DirectoryBrowserMiddleware中间本质上还是定义了一个请求地址与某个物理目录之间的映射关系,而目标目录体现为一个FilePr ...
- ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求
我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的介绍,从提供的功能和特性的角度对这个名为StaticFileMidd ...
随机推荐
- 【Linux】 诊断工具-strace
1,别人家的总结: http://www.cnblogs.com/bangerlee/archive/2012/02/20/2356818.html 2,我自己碰到问题: 暂无. 3,使用场景: 程序 ...
- MiniProfiler.3.0.10 用于MVC4.0中不能显示SQL语句
MiniProfiler.3.0.10 用于MVC4.0中可以显示执行时间,但是不能显示SQL语句,怎么解决?
- Nah Lock: 一个无锁的内存分配器
概述 我实现了两个完全无锁的内存分配器:_nalloc 和 nalloc. 我用benchmark工具对它们进行了一组综合性测试,并比较了它们的指标值. 与libc(glibc malloc)相比, ...
- codeforces C. Devu and Partitioning of the Array
题意:给你n个数,然后分成k部分,每一个部分的和为偶数的有p个,奇数的有k-p个,如果可以划分,输出其中的一种,不可以输出NO; 思路:先输出k-p-1个奇数,再输出p-1个偶数,剩余的在进行构造. ...
- STL中的Traits编程技法
最近在看读<STL源码剖析>,看到Traits编程技法这节时,不禁感慨STL源码作者的创新能力.那么什么是Traits编程技法呢?且听我娓娓道来: 我们知道容器的许多操作都是通过迭代器展开 ...
- poj2228
这显然是一道环形dp的题目 处理环形我们都是要转化为线性来做 一般有这么两种方法处理 复制一段到最后 (比如说noip的能量项链) 考查环形对dp的影响然后分类讨论(比如bzoj1040) 这道题我们 ...
- Final对象
常量指不能改变的量. 在Java中用final标志,声明方式和变量类似: final double PI = 3.1415927; 虽然常量名也可以用小写,但为了便于识别,通常使用大写字母表示常量. ...
- MFC 显示CImg图片
很多示例关于CImg都是基于控制台的,如何把它用于MFC中显示. Problem:直接按照控制台示例写入MFC程序中,当程序执行完display后,其后面的代码便不再执行. solution:开辟新的 ...
- 第一个ios程序
1.ios的理解: Operating System,简称OS,操作系统,ios是苹果操作系统. 2.Xcode开发环境: 苹果公司开发的编程软件,是开发人员建立OS X 和 iOS 应用程序的最快捷 ...
- [Locked] Generalized Abbreviation
Write a function to generate the generalized abbreviations of a word. Example:Given word = "wor ...