何谓静态文件,文件系统上的文件,  css, javascript , image. html  这些都属于静态文件,

.net core web app 默认是不处理文件请求的.  我们来做一个实验

,首先我们 得在项目根目录创建一个根文件夹, 名称为wwwroot

创建好后图标变成了

添加一个images的文件夹,放入一张图片

运行项目,我们输入http://localhost:50771/images/4.jpg, 效果

中间件正常的工作,只是没有任何中间件处理处理响应,这正是验证了我们之前说的,  .net core 默认不处理静态文件请求

这时我们要手动添加 处理静态文件请求的中间件

修改startup 里的configure方法为

        public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} //静态文件中间件
app.UseStaticFiles(); app.Run(async (context) =>
{
//在这里产生响应
context.Response.Headers["Content-Type"] = "application/json";
await context.Response.WriteAsync("hello word");
});
}

这样做完之后,当.net core web app收到请求静态文件的请求时,  在app.useStaticFiles();这一行就response了,   下面的app.run不会再response hello word

然后我们尝试访问一下刚才的图片

成功了,  然后我们再添加一个主页  index.html试试   在body里写上hello word from index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title></title>
</head>
<body>
<h1 >hello word from index.html</h1>
</body>
</html>

然后我们运行起来看到的效果是

这个hello word来自 app.run 里面的 resopnse. 不是来自index.html

这是因为现在还没有开启 默认名中间件, 默认名中间件应该加在 staticFiles中间前面,否则不能正常使用.

            //默认名中间件
app.UseDefaultFiles();
//静态文件中间件
app.UseStaticFiles();

默认的主页支持

index.html

index.htm

defualt.html

defualt.htm

我们运行起来看一下效果

成功了,但是如果想自定义默认名称怎么办. 比如我们要设置默认的主页为foo.html

创建一个foo.html 在body里写 hello word from foo.html

.net core web app有很多中间件都支持一个options的参数 我们要使用defaultFilesOpthin 来添加foo.html为默认名.

            //默认名中间件
DefaultFilesOptions dfo = new DefaultFilesOptions();
dfo.DefaultFileNames.Clear();
dfo.DefaultFileNames.Add("foo.html");
app.UseDefaultFiles(dfo);
//静态文件中间件
app.UseStaticFiles();

运行起来看到的效果

成功了.  刚才讲的staticFles 和 DefaultFiles 两个中间件的功能还可以用FileServe 中间件来实现

            //使用fileServer代替 staticFiles 和defaultFiles
FileServerOptions fso = new FileServerOptions();
fso.DefaultFilesOptions.DefaultFileNames.Clear();
fso.DefaultFilesOptions.DefaultFileNames.Add("foo.html");
app.UseFileServer();

效果 是一样的.

[.net core]10.请求静态文件, 自定义默认文件名的更多相关文章

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

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

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

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

  3. ASP.NET Core 1.1 静态文件、路由、自定义中间件、身份验证简介

    概述 之前写过一篇关于<ASP.NET Core 1.0 静态文件.路由.自定义中间件.身份验证简介>的文章,主要介绍了ASP.NET Core中StaticFile.Middleware ...

  4. NET Core 1.1 静态文件、路由、自定义中间件、身份验证简介

    NET Core 1.1 静态文件.路由.自定义中间件.身份验证简介   概述 之前写过一篇关于<ASP.NET Core 1.0 静态文件.路由.自定义中间件.身份验证简介>的文章,主要 ...

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

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

  6. ASP.NET Core应用针对静态文件请求的处理[2]: 条件请求与区间请求

    通过调用ApplicationBuilder的扩展方法UseStaticFiles注册的StaticFileMiddleware中间件帮助我们处理针对文件的请求.对于StaticFileMiddlew ...

  7. ASP.NET Core应用针对静态文件请求的处理[1]: 以Web的形式发布静态文件

    虽然ASP.NET Core是一款"动态"的Web服务端框架,但是在很多情况下都需要处理针对静态文件的请求,最为常见的就是这对JavaScript脚本文件.CSS样式文件和图片文件 ...

  8. (5)ASP.NET Core 中的静态文件

    1.前言 当我们创建Core项目的时候,Web根目录下会有个wwwroot文件目录,wwwroot文件目录里面默认有HTML.CSS.IMG.JavaScript等文件,而这些文件都是Core提供给客 ...

  9. asp.net core 系列之静态文件

    这篇讲解asp.net core中的静态文件(大致翻译于官网). 静态文件,例如HTML,CSS, images和JavaScript. 要想直接被客户端访问,需要做一些配置. 一.Serve sta ...

随机推荐

  1. Linux命令-文件管理(四)

    Linux命令-文件管理 Linux slocate命令 Linux slocate命令查找文件或目录. slocate本身具有一个数据库,里面存放了系统中文件与目录的相关信息. 语法 slocate ...

  2. [AGC034D]Manhattan Max Matching:费用流

    前置姿势 \(k\)维空间内两点曼哈顿距离中绝对值的处理 戳这里:[CF1093G]Multidimensional Queries 多路增广的费用流 据说这个东西叫做ZKW费用流? 流程其实很简单, ...

  3. ubuntu16.04配置记录

    新开一篇随笔记录ubuntu16.04配置中遇到的坑 1.安装Bumblebee(大黄蜂) Bumblebee是一款双显卡驱动,可以关闭独显,有效控制笔记本发热 第一步:安装我们的主角Bumblebe ...

  4. CentOS版本禁用Ctrl+Alt+Del重启功能

    1  禁用Ctrl+Alt+Del重启功能(不重启系统的前提条件) 1.1  CentOS 6 ##查看/etc/inittab确认Ctrl+Alt+Del相关配置文件 cat /etc/initta ...

  5. Oracle 监听hang住

    1.数据库正常启动: [oracle@db ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Sat Aug 24 ...

  6. linux输出与查看的几种方式

    输出的几种方式:echo/ tee echo "postgres install Failed !!!!!!" | tee -a "$Install_log"# ...

  7. akka 的集群访问方式

    akka  中采用startProxy分区代理 访问 ,跟使用shardRegion 来访问的区别 这两种访问方式是不是重了呢. 而另外这是一个单例代理 private fun startUniver ...

  8. CentOS 7,使用yum安装Nginx

    https://www.centos.bz/2018/01/centos-7%EF%BC%8C%E4%BD%BF%E7%94%A8yum%E5%AE%89%E8%A3%85nginx/ 文章目录 [隐 ...

  9. @RequestMapping注解学习

    1.@RequestMapping注释用于映射url到控制器类或一个特定的处理程序方法.可用于类或方法上.用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径. 参考地址:https://ww ...

  10. 全面解读php-引用变量(&)

    本文讲述引用传值的核心原理,看完即可扫清一切和引用传值相关的内容,不会了记得画图. 一.memory_get_usage的使用 传值赋值 // 定义一个变量 $a = range(0, 10000); ...