何谓静态文件,文件系统上的文件,  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. maven仓库,snapshot快照仓库和release发布仓库的区别

    首先看下snapshot类型 建立一个maven-privider项目,版本定义为1.1-SNAPSHOT 创建一个privider类,写一个hello()方法,并推送maven私有仓库 然后再建立一 ...

  2. JavaScript getClass() 函数

    定义和用法 getClass() 函数可返回一个 JavaObject 的 JavaClass. 语法 getClass(javaobj) 参数 描述 javaobj 一个 JavaObject 对象 ...

  3. P2239 螺旋矩阵

    P2239 螺旋矩阵 题解 这题看上去是个暴力,但是你看数据范围啊,暴力会炸 实际上这是一道数学题QWQ 先看看螺旋矩阵是个什么亚子吧 好吧,找找规律 1 2 ... ... ... ... ... ...

  4. Charles解析https,unknown错误解决办法

    之前一直使用Charles,抓包https的没有问题,enable ssl的时候出现unknown消息,disable ssl的时候出现乱码,解决办法: 在设置–>通用–>关于本机–> ...

  5. golang tcp keepalive实践

    前文中已经介绍了TCP keep alive的做了详尽说明,本文结合golang,介绍如何使用TCP keep alive. 目前golang net包不提供TCP keep alive 空闲多长时间 ...

  6. EMQTT测试--安装与测试 (windows)

    我下载的是windows版 安装 参考http://emqtt.com/docs/install.html 将下载的压缩包解压,我解压到了D盘 命令行窗口,cd到程序目录 控制台模式启动: .\bin ...

  7. python的一些方法

    1.如何循环获得下标,使用 enumerate ints = ['a','b','c','d','e','f'] for idx, val in enumerate(ints): print idx, ...

  8. 解决 /usr/lib/x86_64-linux-gnu/liblapack.so.3: undefined reference to `gotoblas'

    最近需要用到openblas库,本地ubuntu 系统内有一个版本,但是想用自己新编译的openblas, 使用cmake指定了链接的库地址, SET(LINK_LIB_DIRS "/usr ...

  9. bootstrap datetimepicker、bootstrap datepicker日期组件对范围的简单封装

    1.bootstrap datepicker 使用 <div class="row form-group"> <label class="control ...

  10. GO——beego安装及新建项目(一)

    beego简介 Beego是一个快速开发Go应用的http框架,可用于快速开发Api.web及后端服务等各种应用,是一个RESTful框架. beego的架构 Beego由八个独立模块构建,是一个高度 ...