您的位置:首页 > 编程语言 > ASP

[dotnetCore2.0]学习笔记之二: ASP.NET Core中,如何灵活使用静态文件和加载自定义配置

2017-08-23 18:45 1631 查看
参考英文原文:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/static-files

本文,只是学习笔记,记录部分知识点!!

对于NetCore2.0的变化,网上资料很多,比如razor page(有点类似于webform那会儿)、统一了标准、增加了一倍多的API、更加好的性能等等

从Program.cs文件中,也能看到很多变化,总体感觉,简约而不简单。

public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}


功能点一:加载自定义配置文件

把一些加载appsetting.json配置的东西,都封装起来了。当然你也可以覆盖和扩展配置文件;

public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, configBinder) =>
{
var env = context.HostingEnvironment;
configBinder.AddJsonFile("otherSettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"otherSettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true);

})
.UseStartup<Startup>()
.Build();


在项目根目录创建了otherSettings.json和otherSettings.Developement.json 两个文件;用于不同环境下,加载不同的配置测试;

# otherSettings.json文件中的配置内容

{
"Environments": "Production"
}


比如,在About.cshtml.cs中进行测试,读取配置信息

public class AboutModel : PageModel
{
private IConfiguration Configuration { get; }
public AboutModel(IConfiguration configuration)
{
this.Configuration = configuration;
}

public string Message { get; set; }

public void OnGet()
{
Message = "Your application description page.[from ";
Message += Configuration.GetSection("Environments").Value+"]";
}
}


输出内容如下:这样就读取到了相关自定一个配置文件;(本地配置的环境变量ASPNETCORE_ENVIRONMENT默认为Development)

Your application description page.[from Development]
Use this area to provide additional information.


功能点二:自定义静态文件文件夹和目录

比如你的文件目录结构如下:

wwwroot

  css

  js

  images

MyStaticFiles

  119.jpg

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")
  });
}


dotnetcore默认是wwwroot文件夹下的资源文件(比如js,images,css等),如果你想创建一个自己的文件夹(比如名叫MyStaticFiles),可以通过对StaticFileOption进行设置;

通过以上设置,就可以通过访问http://{host:port}/StaticFiles/119.jpg,访问到119.jpg文件了; <img src="/StaticFiles/119.jpg"/>

设置cache-control,缓存10分钟;这样前端浏览器访问时,会在10min中返回304;

app.UseStaticFiles(new StaticFileOptions() {
// 摘要:
//     Called after the status code and headers have been set, but before the body has
//     been written. This can be used to add or change the response headers.
//public Action<StaticFileResponseContext> OnPrepareResponse { get; set; }

OnPrepareResponse = ctx =>
{
ctx.Context.Response.Headers.Append("Cache-Control", "public,max-age=600");
}
});


tips:在我测试过程中,发现在VS中 只有利用 IISExpress 方式运行,才会生效;

功能点三:对指定文件进行鉴权

// 待完善
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐