Dotnet Core 在ASP.NET Core中使用静态文件

来自微软官网  在ASP.NET Core中使用静态文件:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/static-files;

提供静态文件

静态文件通常位于web root<content-root> / wwwroot)文件夹中。有关详细信息,请参阅内容根Web根。您通常将内容根设置为当前目录,以便web root在开发过程中找到项目。

public static void Main(string[] args)
{
    var host = new WebHostBuilder()
        .UseKestrel()
        .UseContentRoot(Directory.GetCurrentDirectory())
        .UseIISIntegration()
        .UseStartup<Startup>()
        .Build();

    host.Run();
}

  

为了提供静态文件,您必须配置中间件以将静态文件添加到管道中。可以通过将Microsoft.AspNetCore.StaticFiles包的依赖关系添加到项目中,然后UseStaticFilesStartup.Configure以下方法调用扩展方法来配置静态文件中间件:

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

对于访问test.png的请求,请按如下方式配置静态文件中间件:

public void Configure(IApplicationBuilder app)
{
    app.UseStaticFiles(); // For the wwwroot folder

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

  StaticFileOptions()可以设置响应头。例如,下面的代码设置从wwwroot文件夹提供的静态文件,并设置Cache-Control标题使其公开可缓存10分钟(600秒):

public void Configure(IApplicationBuilder app)
{
    app.UseStaticFiles(new StaticFileOptions()
    {
        OnPrepareResponse = ctx =>
        {
            ctx.Context.Response.Headers.Append("Cache-Control", "public,max-age=600");
        }
    });
}

  

启用目录浏览

目录浏览允许您的Web应用程序的用户查看指定目录中的目录和文件列表。出于安全考虑,默认情况下禁用目录浏览。要启用目录浏览,请UseDirectoryBrowserStartup.Configure以下方式调用扩展方法 :

public void Configure(IApplicationBuilder app)
{
    app.UseStaticFiles(); // For the wwwroot folder

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

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

并通过调用AddDirectoryBrowser扩展方法添加所需的服务Startup.ConfigureServices

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

FileExtensionContentTypeProvider

FileExtensionContentTypeProvider类包含的文件扩展名映射到MIME内容类型的集合。在下面的示例中,将几个文件扩展名注册到已知的MIME类型,“.rtf”被替换,“.mp4”被删除。

public void Configure(IApplicationBuilder app)
{
    // Set up custom content types -associating file extension to MIME type
    var provider = new FileExtensionContentTypeProvider();
    // Add new mappings
    provider.Mappings[".myapp"] = "application/x-msdownload";
    provider.Mappings[".htm3"] = "text/html";
    provider.Mappings[".image"] = "image/png";
    // Replace an existing mapping
    provider.Mappings[".rtf"] = "application/x-msdownload";
    // Remove MP4 videos.
    provider.Mappings.Remove(".mp4");

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

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

非标准内容类型

ASP.NET静态文件中间件了解近400个已知的文件内容类型。如果用户请求未知文件类型的文件,则静态文件中间件返回HTTP 404(未找到)响应。如果启用了目录浏览功能,则会显示该文件的链接,但URI将返回HTTP 404错误。

以下代码可以提供未知类型,并将未知文件呈现为图像。

public void Configure(IApplicationBuilder app)
{
    app.UseStaticFiles(new StaticFileOptions()
    {
        ServeUnknownFileTypes = true,
        DefaultContentType = "image/png"
    });
}
时间: 2024-10-11 12:52:20

Dotnet Core 在ASP.NET Core中使用静态文件的相关文章

ASP.NET 5中的静态文件处理

ASP.NET 5 与之前的 ASP.NET 相比,有着翻天覆地的变化.了解与熟悉它需要一个过程,而我选择的了解方式是一步一步从无而有手写一个简单的 ASP.NET 5 程序,然后根据遇到的问题进行学习. 这篇博文是关于静态文件(比如图片,css)处理的. 在之前的 ASP.NET 中,只需要将静态文件放到相应的网站目录中就行了,这是由 IIS 进行处理的,在 ASP.NET 程序中可以不用关心. 但是在 ASP.NET 5 中有 2 个不一样的地方. 第一个就是在 ASP.NET 5 中,网站

使用 dotnet watch 开发 ASP.NET Core 应用程序

使用 dotnet watch 开发 ASP.NET Core 应用程序 原文:Developing ASP.NET Core applications using dotnet watch作者:Victor Hurdugaci翻译:谢炀(Kiler)校对:刘怡(AlexLEWIS).许登洋(Seay) 介绍 dotnet watch 是一个开发阶段在源文件发生变动的情况下使用 dotnet 命令的工具. 当代码发生变动的时候可以用来执行编译,运行测试,或者发布操作. 在本教程中,我们将使用一个

Asp.Net Core 中的静态文件

Asp.Net Core 中的静态文件 在这节中我们将讨论如何使 ASP.NET Core 应用程序,支持静态文件,如 HTML,图像,CSS 和 JavaScript 文件. 静态文件 默认情况下,Asp.Net Core 应用程序不会提供静态文件. 静态文件的默认目录是wwwroot,此目录必须位于项目文件夹的根目录中. 将图片复制并粘贴到 wwwroot 文件夹中.我们假设文件的名称是 banner.jpg.为了能够从浏览器访问此文件,路径为:http://{{serverName}}/b

ASP.NET Core 视图 - ASP.NET Core 基础教程 - 简单教程,简单编程

原文:ASP.NET Core 视图 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 视图 花了几章节,终于把 ASP.NET Core MVC 中的 C 控制器涉及的七七八八了,本章节我们来学习下 V,也就是视图部分. ASP.NET Core MVC 应用程序中,没有任何内容像页面,并且在 URL 中指定路径时, 它也不包含与页面直接对应的任何内容. ASP.NET Core MVC 应用程序中最接近页面的东西被称为视图 是不是很拗口,哈哈,页面就是

霸气!Nginx 中缓存静态文件秘籍

导读 这篇教程说明你应该怎样配置 nginx.设置 HTTP 头部过期时间,用 Cache-Control 中的 max-age 标记为静态文件(比如图片. CSS 和 Javascript 文件)设置一个时间,这样用户的浏览器就会缓存这些文件.这样能节省带宽,并且在访问你的网站时会显得更快些(如果用户第二次访问你的网站,将会使用浏览器缓存中的静态文件). 1.准备事项 我想你需要一个正常工作的 nginx 软件,可以查看另一篇的帖子:在 Ubuntu 16.04 LTS 上安装 Nginx,P

如何在 nginx 中缓存静态文件

这篇教程说明你应该怎样配置 nginx.设置 HTTP 头部过期时间,用 Cache-Control 中的 max-age 标记为静态文件(比如图片. CSS 和 Javascript 文件)设置一个时间,这样用户的浏览器就会缓存这些文件.这样能节省带宽,并且在访问你的网站时会显得更快些(如果用户第二次访问你的网站,将会使用浏览器缓存中的静态文件). 1.准备事项 我想你需要一个正常工作的 nginx 软件,就像这篇教程里展示的:在 Ubuntu 16.04 LTS 上安装 Nginx,PHP

【jsp】怎么在jsp文件中引入静态文件(.js .css)

如果在jsp文件中引入静态文件比如(.js或.css等等),可以在使用 /项目名称/路径 的方式,但是这种方式如果在修改了项目了名称后就显得比较麻烦了.除了之外还许多方式,比如相对路径等等.一般情况下,可以先获得项目的根路径,然后再加上文件路径.  ${pageContext.request.contextPath}  可以获得当前项目的路径,然后就只需要在后面加上引入的静态文件的文件路径即可.比如: 这样就可以引入js文件下的jquery.min.js文件了.

Announcing MSTest Framework support for .NET Core RC2 / ASP.NET Core RC2[译]

??.NET Core RC2 和 ASP.NET Core RC2 已在几周之前发布,它包含了.NET CLI的介绍,对.NET Core SDK(以前叫 DNX)的改动,ASP.NET 5到ASP.NET Core的进化等,更多特性可以参考.NET 团队博客和.NET WEB开发团队博客. ??而现在,我们很兴奋的宣布,MSTest类库也支持这个发布版本啦!相关类库和依赖包都可以在NuGet上获取.这次是预发布版本,我们期望收到你的反馈以便带来更完善的正式版本. ??在这篇文章中,我会向你展

【.NET Core】ASP.NET Core之IdentityServer4(1):快速入门

本文中的IdentityServer4基于上节的jenkins 进行docker自动化部署. 使用了MariaDB,EF Core,AspNetIdentity,Docker Demo地址:https://sso.neverc.cn Demo源码:https://github.com/NeverCL/Geek.IdentityServer4 简介 OpenID Connect :常用的认证协议有SAML2p, WS-Federation and OpenID Connect – SAML2p.O