静态文件,包括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 静态文件的更多相关文章

  1. ASP专栏——ASP生成静态文件(用于大量文章)

    对于Web开发人员来说,生成静态文件这个概念并不陌生. 对于Web开发来说,如何能避免客户端访问时不停的查询数据库?现在比较常用的有两种方法,一种是使用缓存技术,将查询出来的结果缓存至缓存框架中,以后 ...

  2. ASP生成静态文件编码为UTF-8格式的HTML文件

    一般在ASP环境下,运行动生静操作时都用到的是FSO,FSO是专门对文件进行操作的一个组件,FSO的编码属性只有三种,系统默认,Unicode,ASCII,并没有utf-8,所以一般中文系统上使用FS ...

  3. ASP.NET5 中静态文件的各种使用方式

    所谓静态文件,包含HTML文件,css文件.图片文件和js文件等,他们是服务器直接读取到客户端的一些资源,在这篇文章中,我们将解释关于ASP.NET5和静态文件的一些内容. 服务端的静态文件 默认情况 ...

  4. ASP.NET Core 中文文档 第三章 原理(3)静态文件处理

    原文:Working with Static Files 作者:Rick Anderson 翻译:刘怡(AlexLEWIS) 校对:谢炀(kiler398).许登洋(Seay).孟帅洋(书缘) 静态文 ...

  5. Asp .Net core 2 学习笔记(3) —— 静态文件

    这个系列的初衷是便于自己总结与回顾,把笔记本上面的东西转移到这里,态度不由得谨慎许多,下面是我参考的资源: ASP.NET Core 中文文档目录 官方文档 记在这里的东西我会不断的完善丰满,对于文章 ...

  6. ASP.NET Core 1.0基础之静态文件处理

    来源 这些HTML , CSS files, image files, 和JavaScript这些静态文件,是ASP.NET能够直接响应给客户端的.本文详述下ASP.NET和静态文件的关系. Serv ...

  7. ASP.NET Core应用针对静态文件请求的处理[5]: DefaultFilesMiddleware中间件如何显示默认页面

    DefaultFilesMiddleware中间件的目的在于将目标目录下的默认文件作为响应内容.我们知道,如果直接请求的就是这个默认文件,那么前面介绍的StaticFileMiddleware中间件会 ...

  8. ASP.NET Core应用针对静态文件请求的处理[4]: DirectoryBrowserMiddleware中间件如何呈现目录结构

    和StaticFileMiddleware中间件一样,DirectoryBrowserMiddleware中间本质上还是定义了一个请求地址与某个物理目录之间的映射关系,而目标目录体现为一个FilePr ...

  9. ASP.NET Core应用针对静态文件请求的处理[3]: StaticFileMiddleware中间件如何处理针对文件请求

    我们通过<以Web的形式发布静态文件>和<条件请求与区间请求>中的实例演示,以及上面针对条件请求和区间请求的介绍,从提供的功能和特性的角度对这个名为StaticFileMidd ...

随机推荐

  1. CSS 的 border 样式

    制作过网页的人都有为画线而烦恼的经历,先来认识一下“Border”(画边框),它是CSS的一个属性,用它可以给能确定范围的HTML标记(如TD.DIV等等)画边框,它可以定义边框线的类型.宽度和颜色, ...

  2. 【Java】Java网络编程菜鸟进阶:TCP和套接字入门

    Java网络编程菜鸟进阶:TCP和套接字入门 JDK 提供了对 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protoco ...

  3. java面向对象值类属语句块

    在我们之前学习语句的时候,我们讲过一种比较特殊的语句块,那就是局部代码块.局部代码块的作用是什么呢,就是把临时使用的变量放在里面,之后执行完之后,局部代码块中定义的变量会直接被释放,这样就避免了那些我 ...

  4. Monthly Expense(二分)

    Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 11196   Accepted: 4587 Description Farm ...

  5. Finding Nemo(bfs)

    Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 6988   Accepted: 1600 Description Nemo ...

  6. P2032 「Poetize9」升降梯上

    描述 开启了升降梯的动力之后,探险队员们进入了升降梯运行的那条竖直的隧道,映入眼帘的是一条直通塔顶的轨道.一辆停在轨道底部的电梯.和电梯内一杆控制电梯升降的巨大手柄.Nescafe之塔一共有N层,升降 ...

  7. Linux企业级开发技术(4)——epoll企业级开发之epoll例程

    为了使大家更加深入了解epoll模型在企业应用中的使用,下面给出一段基于epoll的服务器代码,并在代码中添加了详细注释: #include <deque> #include <ma ...

  8. 不允许从数据类型 nvarchar 到 varbinary 的隐式转换

    一:错误截图 二:解决 数据库里面的数据类型错了,应该是varchar,而我选了varbinary.太粗心了!

  9. 关于TCP的粘包和拆包

    问题产生 一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和封包问题. 下面可以看一张图,是客户端向服务端发送包: 1. 第一种情况 ...

  10. mac下的改装人生——把主硬盘换成ssd

    这两天搞得最多的事情就是我的这两块硬盘,基本上的时间都被他们占用去了,但是最后的结果也是让我很开心--开机瞬秒,程序瞬秒,生活质量瞬间高了很多哈. 关于ssd的各种事情,我的另外一篇博客有讲,算是比较 ...