亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

如何在 ASP.NET Core 中使用 靜態文件

標簽:
C#

ASP.NET Core 支持直接向客户端提供静态文件,比如:Html文件,图片,js文件,为了能够让 ASP.NET Core 处理静态文件,需要使用 静态文件中间件 并做一些必要配置就可以了,这篇文章我们就来一起讨论下。

安装 静态文件中间件

要想安装 静态文件中间件,必须将 Microsoft.AspNetCore.StaticFiles 添加到 ASP.NET Core 的请求管道中,可以使用 Visual Studio 2019 中的 NuGet package manager 可视化界面,要么用 NuGet package manager console 在命令行窗口中键入如下命令。


dotnet add package Microsoft.AspNetCore.Rewrite

基础信息配置

下面的代码展示了在 Startup 中如何对 静态文件中间件 进行配置。


public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
   app.UseStaticFiles();
   app.UseEndpoints(endpoints =>
   {
       endpoints.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
            endpoints.MapRazorPages();
   });
}

ASP.NET Core 中处理 静态文件

静态文件都是统一配置在 wwwroot 文件夹下, 可以看到 wwwroot文件夹下还有 cssimagesjs 等文件夹,值得注意的是这些文件夹之间可以采用相对路径进行访问。

如果 静态文件中间件 已经成功配置好,接下来可以使用下面的路径访问 test.png 图片。


http://localhost:44399/images/test.png

如果大家心思细腻的话就会发现,当我不想用 wwwroot 来承载这些静态文件的话,该怎么做呢? 换句话说,我怎么去处理在 wwwroot 文件夹之外的静态文件呢? 下面的代码片段展示了如何去配置。


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

    app.UseStaticFiles(new StaticFileOptions()
    {
        FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(),@"IDGStaticFiles")),
        RequestPath = new PathString("/StaticFiles")
    });
}

启用 目录浏览

一般web程序中都会提供一个叫做 目录浏览 的功能,它允许用户浏览一个指定文件夹下的所有文件和文件夹,但通常为了安全考虑,这个功能默认都是关闭状态,如果你有开启的需求,可以使用 UseDirectoryBrowser 扩展方法在 Configure 下进行配置,下面的代码片段展示了如何开启 目录浏览


    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDirectoryBrowser();
        }

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

            app.UseStaticFiles(new StaticFileOptions()
            {
                FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot")),
                RequestPath = new PathString("/IDGImages")
            });

            app.UseDirectoryBrowser(new DirectoryBrowserOptions()
            {
                FileProvider = new PhysicalFileProvider(
              Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot\images")),
                RequestPath = new PathString("/IDGImages")
            });
        }
    }

然后把程序跑起来并在 url 中指定 IDGImages 路径,你将会看到 wwwroot\images 文件夹下的所有内容。

保护文件安全

从前面的例子中可以看到,wwwroot 中的这些文件都是公开可访问的,但很多时候想在某些文件上做一些授权处理,如果要这么做的话,有两种方式可以实现。

  • 将需要保护的文件从 wwwroot 移到单独的文件夹中。

  • 利用 Action 来处理文件,并返回 FileResult 的方式。

处理默认页面

最后,你可以利用 UseDefaultFiles 扩展方法来提供一个 web程序的 默认页面,下面的代码配置展示了如何配置。


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

值得注意的是,如果你的web程序中需要有 静态文件,默认文件,目录浏览 三项功能的话,可以直接使用 UseFileServer 扩展方法,下面的代码片段展示了如何在 Configure 方法中进行配置。


app.UseFileServer(enableDirectoryBrowsing: true);

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消