Asp.Net Core 中的静态文件
asp.net core 中的静态文件
在这节中我们将讨论如何使 asp.net core 应用程序,支持静态文件,如 html,图像,css 和 javascript 文件。
静态文件
- 默认情况下,asp.net core 应用程序不会提供静态文件。
- 静态文件的默认目录是
wwwroot
,此目录必须位于项目文件夹的根目录中。
将图片复制并粘贴到 wwwroot 文件夹中。我们假设文件的名称是 banner.jpg。为了能够从浏览器访问此文件,路径为:http://{{servername}}/banner.jpg
在我们的示例中,我们在本地计算机上运行, 因此 url 将如下所示。您的计算机上的端口号可能不同。 http://localhost:3290/banner.jpg
。
从我的电脑,然后导航到上面的 url 的时候, 我们仍然是通过run()
方法的中间件,返回响应的结果,。我没有看到图片banner.jpg
。 这是因为,目前我们的应用程序请求处理管道,没有可以提供静态文件的所需中间件。我们需要使用的中间件usestaticfiles()
。
修改configure()
方法中的代码,将usestaticfiles()
中间件添加到我们的应用程序的请求处理管道中,如下所示。
public void configure(iapplicationbuilder app, ihostingenvironment env) { if (env.isdevelopment()) { app.usedeveloperexceptionpage(); } //添加静态文件中间件 app.usestaticfiles(); app.run(async (context) => { await context.response.writeasync("hello world!"); }); }
在wwwroot
文件夹中没有像 vs 提供的默认模板一样把图片、css 和 javascript 文件进行分类,我们建议将不同的文件类型进行文件夹区分,参考下图文件夹层次结构 :
为了能够从浏览器访问image1.jpg
我们输入地址为 http://localhost:49119/images/image1.jpg
得到结果。
提供 wwwroot 文件夹之外的静态文件
默认情况下,usestaticfiles()
中间件仅提供 wwwroot 文件夹中的静态文件。如果您愿意,我们还可以在wwwroot
文件夹之外提供静态文件。
提供默认文档
大多数 web 程序都有一个默认文档,它是用户访问程序地址时显示的文档内容。例如,您有一个名为default.html
的文件,并且您希望在用户访问应用程序的根 url 时提供它,即http://localhost:3290
此时,我们来访问这个地址看看,我看到我使用run()
方法注册的中间件产生的回调。但是我没有看到默认文档default.html
的内容。为了能够提供默认页面,我们必须在应用程序的请求处理管道中插入usedefaultfiles()中间件
。
//添加默认文件中间件 app.usedefaultfiles(); //添加静态文件中间件 app.usestaticfiles();
请注意:必须在
usestaticfiles
之前,注册usedefaultfiles
来提供默认文件。usedefaultfiles
是一个 url 重写器,实际上并没有提供文件。它只是将url
重写定位到默认文档,然后还是由静态文件中间件提供。地址栏中显示的 url 仍然是根节点的 url,而不是重写的 url。
以下是usedefaultfiles
中间件默认会去查找的地址信息
- index.htm 的默认文件 - index.html - default.htm - default.html
如果要使用其他文档,如 52abp.html 例如,作为您的默认文档,您可以使用以下代码执行此操作。
//将52abp.html指定为默认文档 defaultfilesoptions defaultfilesoptions = new defaultfilesoptions(); defaultfilesoptions.defaultfilenames.clear(); defaultfilesoptions.defaultfilenames.add(“52abp.html”); //添加默认文件中间件 app.usedefaultfiles(defaultfilesoptions); //添加静态文件中间件 app.usestaticfiles();
usefileserver 中间件
usefileserver
结合了usestaticfiles,usedefaultfiles和usedirectorybrowser
中间件的功能。directorybrowser中间件,支持目录浏览,并允许用户查看指定目录中的文件。 我们可以用usefileserver 中间件替换usestaticfiles 和 usedefaultfiles中间件。
/使用usefileserver而不是usedefaultfiles和usestaticfiles fileserveroptions fileserveroptions = new fileserveroptions(); fileserveroptions.defaultfilesoptions.defaultfilenames.clear(); fileserveroptions.defaultfilesoptions.defaultfilenames.add(“52abp.html”); app.usefileserver(fileserveroptions);
这里要注意的知识点:是我们应该使用添加中间件的方式,添加到应用程序的请求处理管道的方法。 在大多数情况下,我们使用以 use 开头的扩展方法添加中间件。例如:
usedeveloperexceptionpage() usedefaultfiles() usestaticfiles() usefileserver()
如果要自定义这些中间件组件,他有对应的可配置选项卡。参考下表: | 中间件 | 选项对象 | | ------------------------- | ----------------------------- | | usedeveloperexceptionpage | developerexceptionpageoptions | | usedefaultfiles | defaultfilesoptions | | usestaticfiles | staticfileoptions | | usefileserver | fileserveroptions |
欢迎添加个人微信号:like若所思。
欢迎关注我的公众号,不仅为你推荐最新的博文,还有更多惊喜和资源在等着你!一起学习共同进步!
推荐阅读