ASP.NET Core 开发,中间件(StaticFiles)的使用,我们开发一款简易的静态文件服务器。

告别需要使用文件,又需要安装一个web服务器。现在随时随地打开程序即可使用,跨平台,方便快捷。

前一篇讲解了中间件的开发,了解了中间件的知识。

下面我们就来使用StaticFiles 开发一款简易静态文件服务器。还可以直接运行纯静态的网站。

新建的ASP.NET Core 项目,不是空的,也就会自带StaticFiles 。wwwroot 就是靠这个中间件读取的。

使用StaticFiles 中间件

新建一个asp.net core项目,选择空的模板。

添加 Microsoft.AspNetCore.StaticFiles 引用

Install-Package Microsoft.AspNetCore.StaticFiles -Pre

添加好引用以后,我们在Startup.cs 添加

        public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();//使用默认文件夹wwwroot
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}

我们在wwwroot 添加一张图 ASP-NET-Banners-01.png

然后程序运行起来

http://localhost:5000/ASP-NET-Banners-01.png

如果我不想使用默认文件夹咋办呢,我们可以使用 StaticFileOptions

        public void Configure(IApplicationBuilder app)
{
var staticfile = new StaticFileOptions();
staticfile.FileProvider = new PhysicalFileProvider(@"C:\");//指定目录 这里指定C盘,也可以是其它目录
app.UseStaticFiles(staticfile);
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}

我在c盘新建一个readme.txt  写入 .net core 。

然后访问: http://localhost:5000/readme.txt

一个文件服务器,应该可以浏览所有文件。

我们就要用到UseDirectoryBrowser

        public void ConfigureServices(IServiceCollection services)
{
services.AddDirectoryBrowser();
} public void Configure(IApplicationBuilder app)
{
var dir = new DirectoryBrowserOptions();
dir.FileProvider= new PhysicalFileProvider(@"C:\");
app.UseDirectoryBrowser(dir);
var staticfile = new StaticFileOptions();
staticfile.FileProvider = new PhysicalFileProvider(@"C:\");//指定目录 这里指定C盘,也可以是其它目录
app.UseStaticFiles(staticfile);
}

这里要在 ConfigureServices 方法加入

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

访问:http://localhost:5000/

这样我们就能浏览C盘的文件了。

你会发现有些文件打开会404,有些又可以打开。那是因为MIME 没有识别出来。

我们可以手动设置这些 MIME ,也可以给这些未识别的设置一个默认值。

        public void Configure(IApplicationBuilder app)
{
var dir = new DirectoryBrowserOptions();
dir.FileProvider= new PhysicalFileProvider(@"C:\");
app.UseDirectoryBrowser(dir);
var staticfile = new StaticFileOptions();
staticfile.FileProvider = new PhysicalFileProvider(@"C:\");//指定目录 这里指定C盘,也可以是其它目录
staticfile.ServeUnknownFileTypes = true;
staticfile.DefaultContentType = "application/x-msdownload"; //设置默认 MIME
var provider = new FileExtensionContentTypeProvider();
provider.Mappings.Add(".log", "text/plain");//手动设置对应MIME
staticfile.ContentTypeProvider = provider;
app.UseStaticFiles(staticfile);
}

设置好以后,对于未识别的,默认为下载。 .log 就被我手动设置成文本方式。

对于前面的这么多设置,StaticFiles 提供了一种简便的写法。UseFileServer

            app.UseFileServer(new FileServerOptions()
{
FileProvider = new PhysicalFileProvider(@"C:\"),
EnableDirectoryBrowsing = true
});

如果需要加上MIME,StaticFileOptions 需要绑定上。

实际应用

不知道大家平时有没有这样的需求,手机想查看电脑的图片或者视频等文件。

这里我们将程序稍微加加一句代码就可以实现了。

在 Program.cs 中

        public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseUrls("http://*:5000")//加上这个就能用ip:5000访问
.UseStartup<Startup>()
.Build(); host.Run();
}

在同一局域网内,使用 ip:5000 就可以访问。这样就能访问电脑的文件。

如果你觉得本文对你有帮助,请点击“推荐”,谢谢。

ASP.NET Core 开发-中间件(StaticFiles)使用的更多相关文章

  1. ASP.NET Core 开发-中间件(Middleware)

    ASP.NET Core开发,开发并使用中间件(Middleware). 中间件是被组装成一个应用程序管道来处理请求和响应的软件组件. 每个组件选择是否传递给管道中的下一个组件的请求,并能之前和下一组 ...

  2. Visual Studio 2017 ASP.NET Core开发

    Visual Studio 2017 ASP.NET Core开发,Visual Studio 2017 已经内置ASP.NET Core 开发工具. 在选择.NET Core 功能安装以后就可以进行 ...

  3. ASP.Net Core开发(踩坑)指南

    ASP.NET与ASP.NET Core很类似,但它们之间存在一些细微区别以及ASP.NET Core中新增特性的使用方法,在此之前也写过一篇简单的对比文章ASP.NET MVC应用迁移到ASP.NE ...

  4. asp.net core mvc 中间件之WebpackDevMiddleware

    asp.net core mvc 中间件之WebpackDevMiddleware WebpackDevMiddleware中间件主要用于开发SPA应用,启用Webpack,增强网页开发体验.好吧,你 ...

  5. C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式

    C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...

  6. asp.net core 自定义中间件【以dapper为例】

    在asp.net core开发中.按照国际案例开始.都是先在Nuget安装XXX包.比如我们今天要用到的Dapper nuget里面安装Dapper 1.然后新建一个类文件DapperExtensio ...

  7. [ASP.NET Core开发实战]开篇词

    前言 本系列课程文章主要是学习官方文档,再输出自己学习心得,希望对你有所帮助. 课程大纲 本系列课程主要分为三个部分:基础篇.实战篇和部署篇. 希望通过本系列课程,能让大家初步掌握使用ASP.NET ...

  8. ASP.NET Core:中间件

    一.什么是中间件 我们都知道,任何的一个web框架都是把http请求封装成一个管道,每一次的请求都是经过管道的一系列操作,最终才会到达我们写的代码中.而中间件就是用于组成应用程序管道来处理请求和响应的 ...

  9. [转]ASP.NET Core 开发-Logging 使用NLog 写日志文件

    本文转自:http://www.cnblogs.com/Leo_wl/p/5561812.html ASP.NET Core 开发-Logging 使用NLog 写日志文件. NLog 可以适用于 . ...

随机推荐

  1. JavaScript工具库之Lodash

    你还在为JavaScript中的数据转换.匹配.查找等烦恼吗?一堆看似简单的foreach,却冗长无趣,可仍还在不停的repeat it!也许你已经用上了Underscore.js,不错,你已经进步很 ...

  2. javascript笔记:javascript的关键所在---作用域链

    javascript里的作用域是理解javascript语言的关键所在,正确使用作用域原理才能写出高效的javascript代码,很多javascript技巧也是围绕作用域进行的,今天我要总结一下关于 ...

  3. [MFC] 梳理一个简单的图片处理桌面软件中用到的MFC控件技巧

     前言 前些天应好友之拖,帮忙设计一个简单的图像处理的小软件.朋友把核心算法封装好了,但是是用openCV类似于console的编程环境,要我在此基础上改成MFC桌面程序.下图是做成之后的效果: 我是 ...

  4. AWS助理架构师认证考经

    上周考了亚马逊的解决方案架构师-助理级别的认证考试并顺利通过.这也算是对自己AWS服务熟悉程度的一种检验.在准备考试的过程中,把自己学习到的AWS知识都梳理了一遍,也算是收获颇丰.这次特意分享了该认证 ...

  5. Linux-磁盘管理小结

    这篇博文主要总结了Linux磁盘的一些操作,主要是硬盘的加载,分区(MBR分区和GPT分区),分区的挂载,以及swap分区的加载设置. 基础命令 df查看磁盘分区使用状况 -l //仅显示本地磁盘(默 ...

  6. 将不确定变为确定~transactionscope何时提升为分布式事务~SQL2005与SQL2008不同

    回到目录 Transactionscope何时被提升为分布式事务,即时要触发msdtc服务,这个问题与数据库版本有关,在前面的文章中,我的MSTDC系列出现了多个版本,有一点没有说清楚,测试的环境不同 ...

  7. JS的脚本语言

    js的脚本语言全程javascript在网页里面使用的脚本语言:分类:1.嵌入网页里面2.在外部脚本标签可以写在网页的任何地方,但一般都写在网页的底部:<script type="te ...

  8. 修改WebBrowser控件的内核解决方案

    方法一 加入你想让WebBrowser控件的渲染模式编程IE8的标准模式, 你可以通过设置注册表FEATURE_BROWSER_EMULATION 来实现. 示例: 注册表中注明当前本机装的IE版本H ...

  9. (Task)任务异步(TAP)的使用

    任务有返回值例子: using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...

  10. rabbitMQ第二篇:java简单的实现RabbitMQ

    前言:在这里我将用java来简单的实现rabbitMQ.下面我们带着下面问题来一步步的了解和学习rabbitMQ. 1:如果消费者连接中断,这期间我们应该怎么办 2:如何做到负载均衡 3:如何有效的将 ...