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. Guava - 并行编程Futures

    Guava为Java并行编程Future提供了很多有用扩展,其主要接口为ListenableFuture,并借助于Futures静态扩展. 继承至Future的ListenableFuture,允许我 ...

  2. 解决ng界面长表达式(ui-set)

    本文来自网友sun shine的问题,问题如下: 您好, 我想求教一个问题. 在$scope中我的对象名字写的特别深, 在 html中我又多次用到了同一个对象, 对不对在 html中让它绑定到一个临时 ...

  3. 【译】使用newInstance()来实例化fragment

    我最近读到StackOverflow上面关于Fragment实例化的一个问题,觉得挺有趣的. new MyFragment()和MyFragment.newInstance()之间的差别是什么?应该用 ...

  4. 5、CC2541芯片中级教程-OSAL操作系统(PWM+看门狗)

    本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 ...

  5. JavaScript字符转Unicode,顺便说句:GitHub的Oh no页面很亮

    遇到个输不出来的字符怎么办,因为输不出来的字符一般又是不常见大多数时候连名字也喊不出来的,所以想问百度谷歌大大也不大可能.如果是小白用户肯定会去把输入法软盘打开切换到其他键盘一个一个找.即使有搜狗输入 ...

  6. JVM内存回收机制简述

    JVM内存回收机制涉及的知识点太多了,了解越多越迷糊,汗一个,这里仅简单做个笔记,主要参考<深入理解Java虚拟机:JVM高级特性与最佳实践(第二版)> 目前java的jdk默认虚拟机为H ...

  7. Redis 监控

    redis 监控有 redis-live 和 redis-stat Redis-Live是一个用来监控redis实例,分析查询语句并且有web界面的监控工具,使用python编写. redis-sta ...

  8. spring之BeanFactory

    spring的IOC容器能够帮我们自动new对象,对象交给spring管之后我们不用自己手动去new对象了.那么它的原理是什么呢?是怎么实现的呢?下面我来简单的模拟一下spring的机制,相信看完之后 ...

  9. C++程序员们,快来写最简洁的单例模式吧

    想必每一位程序员都对设计模式中的单例模式非常的熟悉吧,以往我们用C++实现一个单例模式需要写以下代码: class CSingleton { private: CSingleton() //构造函数是 ...

  10. 对类型“ImgProWPF.MainWindow”的构造函数执行符合指定的绑定约束的调用时引发了异常。

    这个问题的出现是在于我写的一句话 Icon = BitImg("Image/Icon.png") 其原因是Image/Icon.png路径不在执行的exe文件的目录下 将Image ...