游戏技术文章

ASP.NET Core 开发-中间件(StaticFiles)使用

时间:2017-2-19 10:45:04  作者:棋牌资源网  来源:棋牌资源网  查看:6771  评论:0
内容摘要:ASP.NET Core 开发,中间件(StaticFiles)的使用,我们开发一款简易的静态文件服务器。告别需要使用文件,又需要安装一个web服务器。现在随时随地打开程序即可使用,跨平台,方便快捷。前一篇讲解了中间件的开发,了解了中间件的知识。下面我们就来使用StaticFil...
ASP.NET Core 开发,中间件(StaticFiles)的使用,我们开发一款简易的静态文件服务器。

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

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

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

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

 

使用StaticFiles 中间件

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

ASP.NET_Core_开发-中间件(StaticFiles)使用

ASP.NET_Core_开发-中间件(StaticFiles)使用

添加 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

ASP.NET_Core_开发-中间件(StaticFiles)使用

 

如果我不想使用默认文件夹咋办呢,我们可以使用 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 。

ASP.NET_Core_开发-中间件(StaticFiles)使用

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

ASP.NET_Core_开发-中间件(StaticFiles)使用

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

我们就要用到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/

ASP.NET_Core_开发-中间件(StaticFiles)使用

 

这样我们就能浏览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.NETCore开发-中间件(StaticFiles)使用 

欢迎加入VIP,【VIP售价:只要288元永久VIP会员】畅享商业棋牌游戏程序下载,点击开通!

下载说明


☉本站所有源码和资源均由站长亲自测试-绝对保证都可以架设,运营!
☉如源码和资源有损坏或所有链接均不能下载,请告知管理员,

☉本站软件和源码大部分为站长独资,资源购买和收集,放心下载!

☉唯一站长QQ:1004003180  [人格担保-本站注重诚信!]

☉购买建议E-mail:1004003180@qq.com   源码收购 E-mail:1004003180@qq.com    

☉本站文件解压密码  【文章内都自带解压密码,每个密码不同!】


本站提供的所有源码,均来源站长提供,仅学习交流 浙ICP备09009969号

由此产生不良后果和法律责任与本站无关,如果侵犯了您的版权,请来信告知 1004003180@qq.com 将及时更正和删除! 

Copyright © 2008-2024 棋牌资源网,你身边的棋牌资源下载站    All Rights Reserved