专栏首页角落的白板报Asp.Net Core中的静态文件-12

Asp.Net Core中的静态文件-12

目录

本文出自《从零开始学 ASP.NET CORE MVC》目录 推荐文章:配置 ASP.NET Core 请求(Request)处理管道

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 文件进行分类,我们建议将不同的文件类型进行文件夹区分,参考下图文件夹层次结构 :

image.png

为了能够从浏览器访问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

小结

我希望这篇文章可以帮助您满足您的需求。我想收到你的反馈意见。请发布您对本文的反馈,问题或意见。

声明专区

如果您觉得我的文章质量还不错,欢迎打赏,也可以订阅我的视频哦 未得到授权不得擅自转载本文内容,52abp.com保留版权 文字版目录:https://www.52abp.com/Wiki/mvc/latest/1.Intro 【收费】腾讯课堂: https://ke.qq.com/course/392589?tuin=2522cdf3 【免费】youtube视频专区:http://t.cn/Ei0F2EB 免费的更新慢,收费的更新快,仅此而已。就这样。

本文分享自微信公众号 - 角落的白板报(jiaoluodebaibanbao),作者:梁桐铭

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 中间件是什么?在.NET Core中的工作原理又是怎样的呢?10

    在这个视频中,我们将了解,ASP.NET Core 中的中间件是 什么?中间件很重要,尤其是在你想当架构师这一条路上。

    角落的白板报
  • ASP.NET Core开发人员异常页面-13

    如果我们使用上面的代码运行我们的应用程序,我们看不到异常,而是看到“来自 Default.html 页面中的 Hello”。如果您了解 asp.net Core...

    角落的白板报
  • ASP.NET Core中HTTP管道和中间件的二三事-11

    在本视频中,我们将讨论使用中间件组件为asp.net core 应用程序配置请求处理管道。

    角落的白板报
  • 详解 Scrapy 中间键的用法

    中间件的运用比较广泛,如果直接从定义的角度去理解中间件会有点乱,我以分布式系统为例子进行说明。在上篇文章,我讲到目前后台服务架构基本都是往分布式发展。其实分布式...

    猴哥yuri
  • mysql分布式数据库中间件对比mysql分布式数据库中间件对比

    mysql分布式数据库中间件对比 目前数据库中间件有很多,基本这些中间件在下都有了解和使用,各种中间件优缺点及使用场景也都有些心的。所以总结一个关于中间件比较的...

    Albert陈凯
  • What?Tomcat 竟然也算中间件?

    本来今天就该讲 MyCat 了,但是我发现还有一个概念值得和大家聊一下,那就是 Java 中间件!

    江南一点雨
  • 系统架构师论文-论中间件在SIM卡应用开发中的作用

    我曾于近期参与过一个基于SIM卡应用的开发项目,并在项目中担任系统分析的工作。在分析过程中,我们依据面向対象方法対系统进行了划分,其中许多的模块已有成熟的中间件...

    cwl_java
  • 谈谈中间件开发,给想从事中间件开发的同学

    随着国内软件行业的发展,国内互联网公司规模越来越大,业务越来越复杂,随之使用大量的中间件来提高后台服务性能。由此产生了中间件开发和维护人员。

    芋道源码
  • 爬虫框架scrapy之中间件

    中间件是Scrapy里面的一个核心概念。使用中间件可以在爬虫的请求发起之前或者请求返回之后对数据进行定制化修改,从而开发出适应不同情况的爬虫。

    菲宇
  • Laravel 三种中间件作用讲解

    昨天在开发过程中,需要使用到中间件的技术,之前都只是简单的认为要增加中间件就往middleware里添加中间件即可。本着周末的时间,就仔细研究了下 $middl...

    双面人

扫码关注云+社区

领取腾讯云代金券