[ASP.NET Core] Static File Middleware
来源:互联网 发布:石家庄盛光网络 编辑:程序博客网 时间:2024/06/07 01:45
前言
本篇文章介绍ASP.NET Core里,用来处理静态档案的Middleware,为自己留个纪录也希望能帮助到有需要的开发人员。
ASP.NET Core官网
结构
一个Web站台最基本的功能,就是在接收到从「浏览器传入」的HTTP Request封包后,将站台内所提供的静态档案(Static File),封装成为「服务器回传」的HTTP Response封包内容,来提供给浏览器使用。
在ASP.NET Core里,内建了一个Middleware:StaticFileMiddleware,用来建立Web站台提供静态档案的功能。这个Middleware会先剖析HTTP Request封包中的URL路径、然后依照URL路径计算并取得对应的File路径下的档案内容、接着再将该档案内容封装为HTTP Response封包内容,用来提供给浏览器使用。
而在StaticFileMiddleware里,定义URL根路径、File根路径这两个系统参数,来映像URL路径所对应的File路径。用以提供开发人员,灵活的去设定URL路径与File路径之间的关系。
开发
Microsoft.AspNetCore.StaticFiles
在ASP.NET Core里,要加入StaticFileMiddleware来提供静态档案功能。开发人员可以先依照[ASP.NET Core] Getting Started这篇文章里的步骤,来建立相关环境与基本程序代码。接着在project.json里挂载「Microsoft.AspNetCore.StaticFiles」的参考,后续就能使用这个参考里,所提供的StaticFileMiddleware相关对象。
{ "version": "1.0.0-*", "buildOptions": { "debugType": "portable", "emitEntryPoint": true }, "dependencies": {}, "frameworks": { "netcoreapp1.0": { "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.0.0" }, "Microsoft.AspNetCore.StaticFiles": "1.0.0", "Microsoft.AspNetCore.Server.Kestrel": "1.0.0" }, "imports": "dnxcore50" } }}
UseStaticFiles()
完成project.json的相关设定之后,就可以回过来修改「Program.cs」。在Microsoft.AspNetCore.StaticFiles里,提供了UseStaticFiles Extension,让开发人员可以方便的挂载StaticFileMiddleware。在下列的范例程序代码里,示范如何透过UseStaticFiles来挂载StaticFileMiddleware。(在StaticFileMiddleware里面,URL根路径默认为:「http://<Url>」、File根路径默认为:「file:\\<ContentRoot>\wwwroot」)。
using System;using System.IO;using Microsoft.AspNetCore.Builder;using Microsoft.AspNetCore.Hosting;using Microsoft.Extensions.FileProviders;namespace aspnetcoreapp{ public class Program { public static void Main(string[] args) { // Build var host = new WebHostBuilder() // 设定Host内容的File根路径 .UseContentRoot(Directory.GetCurrentDirectory()) // 设定启动参数 .UseStartup<Startup>() // 开启Kestrel聆听HTTP .UseKestrel() // 设定聆听的URL .UseUrls("http://localhost:5000") // 建立Host .Build(); // Run try { // 启动Host host.Start(); // 等待关闭 Console.WriteLine("Application started. Press any key to shut down."); Console.ReadKey(); } finally { // 关闭Host host.Dispose(); } } } public class Startup { // Methods public void Configure(IApplicationBuilder app) { // 挂载StaticFilesMiddleware app.UseStaticFiles(); } }}
UseWebRoot(webRoot)
在StaticFileMiddleware里面,File根路径默认为:「file:\\<ContentRoot>\wwwroot」。如果要变更默认的File根路径,开发人员可以使用ASP.NET Core所提供的UseWebRoot Extension来变更默认的File根路径。在下列的范例程序代码里,示范如何透过UseWebRoot来变更默认的File根路径。(范例执行时挂载的StaticFileMiddleware,URL根路径同样为:「http://<Url>」、File根路径变更为:「file:\\<CurrentDirectory>\aaa」)。
using System;using System.IO;using Microsoft.AspNetCore.Builder;using Microsoft.AspNetCore.Hosting;using Microsoft.Extensions.FileProviders;namespace aspnetcoreapp{ public class Program { public static void Main(string[] args) { // Build var host = new WebHostBuilder() // 设定Web站台的File根路径 .UseWebRoot(Directory.GetCurrentDirectory() + @"\aaa") // 设定Host内容的File根路径 .UseContentRoot(Directory.GetCurrentDirectory()) // 设定启动参数 .UseStartup<Startup>() // 开启Kestrel聆听HTTP .UseKestrel() // 设定聆听的URL .UseUrls("http://localhost:5000") // 建立Host .Build(); // Run try { // 启动Host host.Start(); // 等待关闭 Console.WriteLine("Application started. Press any key to shut down."); Console.ReadKey(); } finally { // 关闭Host host.Dispose(); } } } public class Startup { // Methods public void Configure(IApplicationBuilder app) { // 挂载StaticFilesMiddleware app.UseStaticFiles(); } }}
UseStaticFiles(options)
除了使用预设参数挂载StaticFilesMiddleware之外,开发人员也可以使用自定义参数来挂载StaticFilesMiddleware。如果要使用自定义参数来挂载StaticFilesMiddleware,开发人员可以同样使用UseStaticFiles Extension来使用自定义参数挂载StaticFilesMiddleware。在下列的范例程序代码里,示范如何透过UseStaticFiles来挂载StaticFilesMiddleware,并且定义其URL根路径与File根路径。(范例执行时挂载的StaticFileMiddleware,URL根路径变更为:「http://<Url>/bbb」、File根路径变更为:「file:\\<CurrentDirectory>\ccc」)。
using System;using System.IO;using Microsoft.AspNetCore.Builder;using Microsoft.AspNetCore.Hosting;using Microsoft.Extensions.FileProviders;namespace aspnetcoreapp{ public class Program { public static void Main(string[] args) { // Build var host = new WebHostBuilder() // 设定Host内容的File根路径 .UseContentRoot(Directory.GetCurrentDirectory()) // 设定启动参数 .UseStartup<Startup>() // 开启Kestrel聆听HTTP .UseKestrel() // 设定聆听的URL .UseUrls("http://localhost:5000") // 建立Host .Build(); // Run try { // 启动Host host.Start(); // 等待关闭 Console.WriteLine("Application started. Press any key to shut down."); Console.ReadKey(); } finally { // 关闭Host host.Dispose(); } } } public class Startup { // Methods public void Configure(IApplicationBuilder app) { // 挂载StaticFilesMiddleware app.UseStaticFiles(new StaticFileOptions() { // 设定URL根路径 RequestPath = @"/bbb", // 设定File根目录 FileProvider = new PhysicalFileProvider(Directory.GetCurrentDirectory() + @"\ccc") }); } }}
参考
Working with Static Files - ASP.NET Core
原文链接:http://www.cnblogs.com/clark159/p/5984152.html
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注
- [ASP.NET Core] Static File Middleware
- [ASP.NET Core] Middleware
- [ASP.NET Core] Middleware
- ASP.NET Core 开发-中间件(Middleware)
- .NET Core 中间件MiddleWare
- Asp.Net Core Authentication Middleware And Generate Token
- ASP.NET Core中间件(Middleware)实现WCF SOAP服务端解析
- ASP.NET Core轻松入门之Middleware管道模型
- ASP.NET Core File Providers
- ASP.NET Core 1.0: 指定Static File中的文件作为default page
- ASP.NET Core 运行原理解剖[3]:Middleware-请求管道的构成
- ASP.NET Core 运行原理解剖[3]-Middleware-请求管道的构成
- ASP.NET Core 运行原理解剖[3]-Middleware-请求管道的构成
- ASP.NET Core 运行原理解剖[3]:Middleware-请求管道的构成
- 用Middleware给ASP.NET Core Web API添加自己的授权验证
- ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)
- 解读ASP.NET 5 & MVC6系列(6):Middleware详解
- ASP.NET Core 介绍
- 沉沦17年,这位昔日科技霸主、最值钱企业,终于回来了……
- spark版WordCount(Java),将输出结果排序,并去除输出文件中的括号。
- 从工程转向管理,访谈Github公司的Phil Haack
- 在Linux开发.NET——拜拜了Win10
- 2016年10月20日 .NET Core 1.0.2 更新
- [ASP.NET Core] Static File Middleware
- 微软市值今天涨了 250 亿,这家离我们越来越远的公司,为什么生意反倒越来越好了?
- 使用StyleCop 进行代码评审
- ASP.NET Core MVC TagHelper实践HighchartsNET快速图表控件
- Autofac 之 基于 Castle DynamicProxy2 的 Interceptor 功能
- 微服务架构之外的选择——基于服务架构
- [ASP.NET Core] Middleware
- Visual Studio“15”进一步改善性能和易用性
- ASP.NET Core 性能对比评测(ASP.NET,Python,Java,NodeJS)