何谓静态文件,文件系统上的文件,  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. 【转】有rand7(可以随机生成1到7的数据的随机函数),如何产生rand10(随机产生1-10的数)

    今天停GJP说在面试的时候碰到了一道这样的题目:有rand7(可以随机生成1到7的数据的随机函数),如何产生rand10(随机产生1-10的数) 感觉很有意思,找到了这篇博客,感觉解法很好玩,转载在这 ...

  2. httpd如何卸载以及安装

    卸载 首先,要确认下是否有安装过,或者是系统自带了httpd服务,通过以下命令: # rpm -qa | grep httpd 或者: # yum list | grep httpd 我已经安装过一次 ...

  3. 使用R进行方差分析

    eff=c(58.2,52.6,56.2,41.2,65.3,60.8,49.1,42.8,54.1,50.5,51.6,48.4,60.1,58.3,70.9,73.2,39.2,40.7,75.8 ...

  4. [前端][自定义DOM事件]不使用setTimeout实现双击事件或n击事件

    使用setTimeout实现双击事件 例如,这样: let div = document.getElementById("div"); doubleClick(div, funct ...

  5. python实战,

    1.把日志状态码为200得请求记录下来 记录信息(ip,访问时间,请求资源) 封装函数再次调用,健壮性try except #coding=utf-8import redef  aclog(path, ...

  6. 第3周Java编程总结

    1.打印输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其中各位数字立方和等于该数本身.例如,153是一个“水仙花数”. 2. 编写Java程序,求13-23+33-43+…+973-983+ ...

  7. .tcc文件

    今天看源码时碰到一个MemoryPool.h文件和MemoryPool.tcc文件,毫不犹豫在vs工程下把.tcc加到了源文件文件夹下, 把.h文件放到了头文件文件夹下.结果闹了笑话: 以下是解释, ...

  8. cors 预请求

    1.CORS的其他限制 默认允许的方法只有:GET.HEAD.POST默认允许的Content-Type:text/plain.multipart/form-data.applicaton/x-www ...

  9. unity3d卡在loading的解决方法

    解决方案: 关闭U3D,打开电脑的网络适配器把网给掐掉,打开U3D后会提示Workoffline 点击这个即可,然后再把网给起起来就可以了

  10. kotlin之字符类型

    kotlin语言中,字符类型用Char表示,与java区别在于,kotlin中字符不能直接看成数字,如下: java中: void check (char c){ if(c==97){ } } kot ...