zoukankan      html  css  js  c++  java
  • Asp.Net Core入门之静态文件

    静态文件(css,js,html等类型文件)通常位于 web根目录下,而ASP.Net Core框架默认内容根目录下的wwwroot文件夹为web根目录。这里简单解释下内容根目录:实际就是指包含可执行程序exe,程序集dll,配置文件json,xml等的文件目录.

    1.访问web根目录静态文件

    正常情况下,静态文件是无法直接访问的,需要我们添加如下静态文件的中间件,这是框架内置自带的。

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
        app.UseStaticFiles(); 
    }

    然后我们就可通过web根目录的相关路径访问静态文件。例如,Web 应用程序项目模板包含 wwwroot 文件夹中的多个文件夹 :

    • wwwroot
      • css
      • images
      • js

    然后就可以通过如下格式的URL:https://localhost:5001/images/123.jpg 来访问静态文件。

    2.访问web根目录之外的静态文件

    有些时候,可能有些静态文件我们并不是放在web根目录下面的。例如如下一个目录层次结构,其中要提供的静态文件位于 Web 根目录之外:

    • wwwroot
      • css
      • images
      • js
    • Content
      • images
        • img.jpg

    如果通过URL:https://localhost:5001/Content/images/img.jpg是无法访问的,这个时候我们就需要额外的指定静态文件路径:

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    {
               //wwroot目录下静态文件
                app.UseStaticFiles();
                //wwwroot之外的静态文件
                app.UseStaticFiles(new StaticFileOptions
                {
                    //指定实际物理路径
                    FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"Content/images")),
                    //设置URL请求的文件路径
                    RequestPath = new Microsoft.AspNetCore.Http.PathString("/MyStaticFiles")
                });
    }

    然后就可以通过如下格式的URL:https://localhost:5001/MyStaticFiles/img.jpg 来访问静态文件。

    3.提供默认文件

    UseDefaultFiles中间件用于启用默认文件的功能,例如我们打开一个网站只输入网站地址,就会自动跳出网站首页。这里的网站首页实际就相当于一个默认文件。

    ASP.Net Core为我们简化了默认文件的搜索功能,我们只需要添加中间件即可。

    public void Configure(IApplicationBuilder app)
    {
        app.UseDefaultFiles();
        app.UseStaticFiles();
    }

    要提供默认文件,必须在 UseStaticFiles 前调用 UseDefaultFiles。 UseDefaultFiles 实际上用于重写 URL,不提供文件。 通过 UseStaticFiles 启用静态文件中间件来提供文件。

     UseDefaultFiles 默认支持以下几种类型文件:

    • default.htm
    • default.html
    • index.htm
    • index.html

    当然,框架也支持自定义默认文件,感兴趣的同学可以研究一下。

    例如如下一个目录层次结构:

    • wwwroot
      • Index.html
      • css
      • images
      • js
    • 通过URL:https://localhost:5001/访问时,会自动跳转到并打开Index.html页面

    4.启用目录浏览功能

    出于安全考虑,目录浏览默认处于禁用状态,需通过添加UseDirectoryBrowser中间件的方式开启。

    public void Configure(IApplicationBuilder app)
    {
        //默认文件
        app.UseDefaultFiles();
        //静态文件
        app.UseStaticFiles();
       //目录浏览
       app.UseDirectoryBrowser();
    }

    另外,需要注册目录浏览的服务

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDirectoryBrowser();
    }

    例如如下一个目录层次结构:

       wwwroot

    • 123.jpg
    • 234.jpg

    通过URL:https://localhost:5001/访问时,由于wwwroot根目录下不存在默认文件,所以会打开文件目录。

     5.UseFileServer

    UseFileServer 结合了 UseStaticFilesUseDefaultFiles 和 UseDirectoryBrowser(可选)的功能。

    例如以下目录层次结构:

    • wwwroot
      • 123.jpg
      • 234.jpg
    • Content
      • images
        • 234.jpg

    以下代码启用静态文件、默认文件和及 MyStaticFiles 的目录浏览:

    public void Configure(IApplicationBuilder app)
    {
    //静态文件 app.UseStaticFiles(); app.UseFileServer(new FileServerOptions { FileProvider = new PhysicalFileProvider( Path.Combine(Directory.GetCurrentDirectory(), "Content")), RequestPath = "/MyStaticFiles",
    //启用目录 EnableDirectoryBrowsing = true }); }

    EnableDirectoryBrowsing 属性值为 true 时必须注册服务 AddDirectoryBrowser

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDirectoryBrowser();
    }

    通过URL:https://localhost:5001/MyStaticFiles/访问时,由于目录下不存在默认文件,所以会打开文件目录。

     

  • 相关阅读:
    2021/6/17学期总结
    2021/6/16申请加分
    2021/6/15
    2021/6/14
    2021/6/11
    2021/6/10
    2021/6/9
    2021/6/8
    2021/6/7
    2021/6/5读书笔记
  • 原文地址:https://www.cnblogs.com/chenxf1117/p/12974465.html
Copyright © 2011-2022 走看看