• [.net core]10.请求静态文件, 自定义默认文件名


    何谓静态文件,文件系统上的文件,  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();

    效果 是一样的.

  • 相关阅读:
    GridView&ObjectDataSource新特性小记 懒人篇(一) 分页上路
    HyperLink多个属性的数据绑定
    关于客户端改变ListBox的一个小问题
    xmlhttp对象调用webservice要点补疑
    GridView&ObjectDataSource 新特性小记 懒人篇(二) 分页加速
    让VisualStudio的StartPage关联自己的博客
    JavaScript null 和 undefined 的比较 Better
    JavaScript 构造函数 Better
    mysql 常用命令汇总 Better
    Vue2前端项目构建&码云托管 Better
  • 原文地址:https://www.cnblogs.com/nocanstillbb/p/11298498.html
Copyright © 2020-2023  润新知