[ASP.NET Core] Static File Middleware

前言

本篇文章介绍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」)。

frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 0px; height: 0px;">

frameborder="0" scrolling="no" style="border-width: initial; border-style: none; width: 0px; height: 0px;">

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){// Buildvar host = new WebHostBuilder()// 设定Host内容的File根路径.UseContentRoot(Directory.GetCurrentDirectory())// 设定启动参数.UseStartup<Startup>()// 开启Kestrel聆听HTTP            .UseKestrel()// 设定聆听的URL.UseUrls("http://localhost:5000")// 建立Host       .Build();// Run try{// 启动Hosthost.Start();// 等待关闭Console.WriteLine("Application started. Press any key to shut down.");Console.ReadKey();}finally{// 关闭Hosthost.Dispose();}}}public class Startup{// Methodspublic void Configure(IApplicationBuilder app){            // 挂载StaticFilesMiddlewareapp.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){// Buildvar 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{// 启动Hosthost.Start();// 等待关闭Console.WriteLine("Application started. Press any key to shut down.");Console.ReadKey();}finally{// 关闭Hosthost.Dispose();}}}public class Startup{// Methodspublic void Configure(IApplicationBuilder app){// 挂载StaticFilesMiddlewareapp.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){// Buildvar host = new WebHostBuilder()// 设定Host内容的File根路径.UseContentRoot(Directory.GetCurrentDirectory())// 设定启动参数.UseStartup<Startup>()// 开启Kestrel聆听HTTP            .UseKestrel()// 设定聆听的URL.UseUrls("http://localhost:5000")// 建立Host       .Build();// Run try{// 启动Hosthost.Start();// 等待关闭Console.WriteLine("Application started. Press any key to shut down.");Console.ReadKey();}finally{// 关闭Hosthost.Dispose();}}}public class Startup{// Methodspublic void Configure(IApplicationBuilder app){// 挂载StaticFilesMiddlewareapp.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跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/328155.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JVM 优化经验总结

转载自 JVM 优化经验总结开始之前 Java 虚拟机有自己完善的硬件架构, 如处理器、堆栈、寄存器等&#xff0c;还具有相应的指令系统。JVM 屏蔽了与具体操作系统平台相关的信息&#xff0c;使得 Java 程序只需生成在 Java 虚拟机上运行的目标代码 (字节码), 就可以在多种平台上不…

2016年10月20日 .NET Core 1.0.2 更新

我们今天发布了一个更新&#xff0c;解决了在macOS Sierra系统上安装的问题。 更改仅限于macOS安装程序。 运行时或工具没有更改; .NET Core 1.0.1仍是Windows和Linux的最新版本&#xff0c;最新的Microsoft.NETCore.App版本仍为1.0.1。 您现在可以下载更新的.NET Core 1.0.2 m…

window7连接其他计算机的打印机,win7系统电脑怎样连接其它电脑上在打印机?

2017-12-02 回答方法/步骤1第一步&#xff1a;设置共享打印机电脑。(a电脑)单击【开始】-【设备和打印机】或点击【开始】/【控制面板】/【硬件和声音】/【设备和打印机】&#xff0c;打开【添加设备】和【添加打印机】窗口&#xff0c;如图1所示2设置要共享的打印机&#xff0…

系统架构设计师考试999999999999

系统架构师考试比较的难&#xff0c;属于软件工程师考试中的高级考试&#xff0c;有选择题&#xff0c;分析题&#xff0c;论文&#xff0c;请坚持。 这是高产似母猪啊。 1.每天2小时&#xff0c;坚持了4年考过了软件设计师&#xff0c;系统架构师&#xff0c; 四年时间花了大…

Java启动参数与内存调优一些学习笔记

转载自 Java启动参数与内存调优一些学习笔记 .参数的含义-Xms128m JVM初始分配的堆内存 -Xmx512m JVM最大允许分配的堆内存&#xff0c;按需分配 -XX:PermSize64M JVM初始分配的非堆内存 -XX:MaxPermSize128M JVM最大允许分配的非堆内存&#xff0c;按需分配 JVM内存模型 …

Oracle数据库基本概念理解(3)

/*| PL/SQL编程*/ --声明变量 DECLAREV_NAME VARCHAR2(20); --一般变量V_AGE NUMBER(2);v_id SUN.TUSER.USERID%TYPE:14;--属性变量v_user SUN.TUSER%ROWTYPE; --行属性变量 BEGIN--赋常量值V_NAME:Tom;V_AGE :20;DBMS_OUTPUT.put_line(姓名&#xff1a;||V_NAME||年…

服务器io修改,更改 Linux I/O 调度器来改善服务器性能

为了从 Linux 服务器榨取尽可能多的性能&#xff0c;请了解如何更改 I/O 调度器以满足你的需求。Linux I/O 调度器()控制内核提交读写请求给磁盘的方式。自从 2.6 内核以来&#xff0c;管理员已经能够更改这个调度器&#xff0c;所以他们可以自定义他们的平台以完全适合他们的需…

如何合理的规划一次 JVM 性能调优

转载自 如何合理的规划一次 JVM 性能调优摘要: JVM性能调优涉及到方方面面的取舍&#xff0c;往往是牵一发而动全身,需要全盘考虑各方面的影响&#xff0c;那么如何进行一次优雅的调优&#xff0c;提升应用的性能&#xff1f;这是 JVM 优化系列第三篇&#xff1a;JVM 调优系列…

服务器复制不了文档,服务器复制粘贴不了

服务器复制粘贴不了 内容精选换一换帮助用户完成专属云服务器备份任务的创建&#xff0c;快速完成服务器数据保护。专属云服务器不支持应用一致性备份。当专属对象存储的容量不足时&#xff0c;会导致专属云服务器备份创建失败。已开通专属对象存储。登录管理控制台。单击&…

大神开发的模板框架 包括常见的功能

https://gitee.com/lcg0124/bootdo http://localhost/ 就可以访问了 http://localhost/blog

在Linux开发.NET——拜拜了Win10

我是一个有多年开发经验的.NET程序员。最近&#xff0c;我决定使用*NIX系统来开发.NET程序&#xff0c;虽然看起来有些激进&#xff0c;但是我可以说&#xff0c;这是我做过最好的决定了。 事情的起因是这样的&#xff0c;上周星期五&#xff08;十月14日&#xff09;&#xff…

20个非常有用的Java程序片段

转载自 20个非常有用的Java程序片段下面是20个非常有用的Java程序片段&#xff0c;希望能对你有用。 1. 字符串有整型的相互转换String a String.valueOf(2); //integer to numeric string int i Integer.parseInt(a); //numeric string to an int 2. 向文件末尾添加内…

从工程转向管理,访谈Github公司的Phil Haack

在本次播客中&#xff0c;QCon旧金山大会、 伦敦大会和纽约大会的主席Wes Reisz访谈了GitHub的工程主管Phil Haack&#xff0c;Haack在Github的工作聚焦于实现将软件推送到开发人员的桌面&#xff0c;当前正致力于发布GitHub Desktop这样的软件。GitHub Desktop是用于Visual St…

怎样往阿里云windows服务器传文件

怎样往阿里云windows服务器传文件 2017年12月05日 21:28:56 阿杜_ardo 阅读数 9169 1、在本地电脑上&#xff0c;快捷键“WINR"在“运行”中输入“MSTSC”&#xff0c;点击确定。 2、在“远程桌面连接”框框点击“选项”展开。&#xff08;计算机中输入阿里云服务器的IP地…

Hibernate基本概念

--用户解锁alter user scott account unlock;一个项目对应一个表空间oracle:--创建表空间--创建用户create user 用户名idendified by 密码default tablespace 表空间名-- 授权grant 权限(角色) to 用户--建表--增删改查--存储过程对象 ->jdbc->数据库&#xff08;表…

手机app 服务器 网页同步,手机app接入云服务器

手机app接入云服务器 内容精选换一换通过内网连接云手机实例时&#xff0c;需要在租户VPC中创建一台弹性云服务器&#xff0c;作为连接云手机的跳板机器。若创建云手机服务器时未使用自定义网络&#xff0c;还需在云手机租户的VPC和服务器所在VPC之间建立对等连接&#xff0c;如…

Java中的OutOfMemoryError

转载自 Java中的OutOfMemoryError引子&#xff1a;今天在<Sharding-JDBC官方群>里有个哥们称“不连sjdbc不会把内存吃光&#xff0c;连sjdbc跑一会就把内存吃光”&#xff0c;倍感诧异&#xff0c;我们已经用sj很久了&#xff0c;一直未发现sj吃内存的情况&#xff0c;遂…

沉沦17年,这位昔日科技霸主、最值钱企业,终于回来了……

1999年12月30日&#xff0c;这是微软最高光的时刻。当天其股价创出历史最高位59.97美元/股&#xff0c;市值达到了6130亿美元&#xff0c;是有史以来最值钱的公司——直至13年后&#xff0c;苹果公司的市值才超越这一纪录。 ▲微软股价 处在新千年之交&#xff0c;意气风发的微…

mysql5.5安装配置 在阿里云服务器上 本地navicat连接

MySQL 5.5安装配置教程. 2018年03月20日 19:18:49 沸点数据 阅读数 18046 1、官网下载MySQL 5.5。 下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.5.html#downloads 2、安装MySQL5.5 注意&#xff1a;安装之前&#xff0c;请关闭杀毒软件。 &#xff08;1…