在这篇文章中,我将向你们介绍,如何使用中间件组件来处理静态文件。这篇文章中,咱们讨论下面几个问题:html
最重要的特性之一就是;几乎全部的web应用程序都应该具有直接从文件系统存取静态文件的能力。ASP.NET Core可以直接从客户端获取应用程序的静态文件,好比:HTML、Images、CSS、以及JavaScript文件。可是最重要的一点,你须要记住的是:默认状况下,在ASP.NET Core中并不能直接获取访问这些静态文件。须要额外在作一些配置,ASP.NET Core才可以直接获取访问这些静态文件。web
在ASP.NET Core中,默认存放静态文件的目录或者地方就是wwwroot文件夹,而且这个wwwroot文件夹须要放在项目的根目录下面。默认状况下,这是ASP.NET Core应用程序,能直接访问静态文件的目录。可是咱们能够经过使用UseWebRoot方法来改变这一默认行为。在后面的文章中,我将介绍怎么改变默认存在静态文件的目录。在这篇文章中,咱们就使用wwwroot文件夹,来存放静态文件。缓存
咱们打开,以前文章中,作的例子,建立的空白的ASP.NET Core项目:学习
能够看到空白模板,建的ASP.NET Core项目是没有wwwroot文件夹的。网站
右键项目--选择新建文件夹—【wwwroot】,一旦咱们建立了wwwroot文件夹,咱们在里面添加一个html文件:MyCustom.html3d
在HTML文件中,加上这句代码:htm
如今让咱们来运行程序,输入这个地址:http://localhost:51519/MyCustom.html中间件
你能够看到,并无获得咱们想要的输出结果,页面上显示的是咱们在Configure方法中,使用Run扩展方法,输出的结果:也就是Get One GetTwoblog
咱们之因此没有获得想要的结果:是由于在请求处理管道中没有任何一个中间件,能够处理静态文件。ip
ASP.NET Core中,提供了一个UseStaticFiles中间件,它能够用来处理静态文件。咱们来修改一下Configure方法,添加这个中间件:
如今运行程序,输出刚才的地址,就能获得想要的输出结果了。
大多数应用程序,都有一个默认的页面,例如:index.html或者default.html,做为它的启动页面,启动页面就是用户访问程序的根路径的时候看到的页面。例如:若是你有一个默认的index.html页面,那么无论何时用户访问你的网站根路径的时候,看到的都是这个页面。
如今咱们在wwwroot文件夹下,添加一个index.html文件:
写上这句代码:
如今运行程序,访问根路径:http://localhost:51519/
能够看到,获得的结果并非咱们想要的。为了获得想要的结果,咱们须要添加另一个中间件,也就是UseDefaultFiles()到请求管道中去。因此咱们修改一下Configure方法:
如今咱们运行程序:
咦,咋回事,咱们不是加了默认页面中间件了么,怎么没效果???这是由于咱们添加的顺序不对:
再运行就是咱们想要的结果了。
注意:你须要将UseDefaultFiles中间件,写在UseStaticFiles中间件的上面。须要记住的是:UseDefaultFiles中间件仅仅只是将URL重写,并不处理静态文件。它的工做就是把URL重写为默认文件,而后UseStsticFiles中间件,就去处理这个默认文件,咱们就看到页面了。
UseDefaultFiles中间件,将会在wwwroot目录下面,找下面的文件:
index.htm
index.html
default.htm
default.html
这就是默认的行为。可是你一样能够改变这一约定俗成的行为。例如,若是你想MyCustom.html,做为默认页面,你能够这样:在Configure方法中,写以下代码:
如今运行程序就获得你想要的结果了:
若是没有获得你想要的结果,可能就是页面有缓存,用Ctrl+F5强制刷新一下,就好了。
UseFileServer中间件组件,包含这几个中间件的功能:UseStaticFiles、UseDefaultFiles以及UseDirectoryBrowser.咱们已经学习了UseStaticFiles和UseDefaultFiles这两个中间件。UseDirectoryBrowser中间件,根据名字来看就是启动目录浏览,也就是容许用户能够看到指定目录下面的文件。在咱们的例子中,咱们可使用UseFileServer中间件,来取代UseDefaultFiles和UseStsticFiles中间件,看:
而后运行程序:结果也是同样:
能够看到使用UseFileServer中间件,就很好的替换了以前的代码了:是否是很厉害!
在下面的文章中,我将带领你们学习,—>开发异常页面中间件.这篇文章,我详细介绍了,在ASP.NET Core中怎么处理静态文件,怎么使用静态文件中间件来处理静态文件,但愿大家都学会了,不明白的,你们能够给我留言,若是以为我写得好,能够点个赞,谢谢。