在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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 就可以访问。这样就能访问电脑的文件。
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
博客示例代码GitHub:https://github.com/linezero/Blog
ASP.NET Core
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 就可以访问。这样就能访问电脑的文件。
如果你觉得本文对你有帮助,请点击“推荐”,谢谢。
|
请发表评论