手机版

c# .净核心静态文件服务器的新人入门教程

时间:2021-08-31 来源:互联网 编辑:宝哥软件园 浏览:

概要:

本文通过示例,讲解了NET Core2.0静态文件目录的相关知识,并附带解析,适合新手,并附带了完整的项目代码。(项目通过vs2017初始化的ASP。网核心应用程序,之后选择***空项目***)

示例代码

项目结构

program.cs文件

使用系统;使用系统。集合。通用;使用系统IO;使用系统Linq .使用系统。线程化。任务;使用微软AspNetCore .使用微软。托管;使用微软。扩展。配置;使用微软。扩展。日志记录;命名空间static file server { public class Program { public static void Main(string[]args){ BuildWebHost(args)).run();}公共静态IWebHost BuildWebHost(字符串[]个参数)=WebHost .CreateDefaultBuilder(参数).UseKestrel().UseContentRoot(目录. GetCurrentDirectory()) //设置当前目录的内容UseIISIntegration().UseUrls('http://*:5000') //使项目在5000端口被访问UseStartupStartup().build();}}Startup.cs文件

使用系统;使用系统。集合。通用;使用系统Linq .使用系统。线程化。任务;使用微软AspNetCore。建设者使用微软。托管;使用微软AspNetCore。超文本传送协议(Hyper Text Transport Protocol的缩写)使用微软。静态文件;使用微软。扩展。依赖注射;使用微软。扩展名。文件提供商命名空间StaticFileServer {公共类启动} {//此方法由运行时调用。使用此方法向容器添加服务。//有关如何配置应用程序的更多信息,请访问https://go.microsoft.com/fwlink/?LinkID=398940公共void ConfigureServices(IServiceCollection services){ }//此方法由运行时调用。使用此方法配置超文本传送协议请求管道公共空间配置(IApplicationBuilder)应用程序,IHostingEnvironment env) { app .UseStaticFiles();//使用默认文件夹网站根目录仅仅shi wwwroot对外可见应用程序.运行(异步(上下文)={等待上下文.回应。WriteAsync('你好,耶稣');});} }}运行效果:

解析:这是一个基本的静态文件服务器,app .UseStaticFiles()函数使当前内容目录下默认的网站根目录中的文件可以被访问

那么问题来了,若想访问其他目录下的静态文件,该怎么办?

设置任意目录下的静态文件可以访问代码:

//设置指定目录的文件可以被访问start var静态文件=新建静态文件选项();静态文件文件提供程序=new PhysicalFileProvider(@ ' c : \ ');//指定目录,这里指的是C盘,也可以指定其他目录应用程序.使用静态文件(静态文件);我们吧startup.cs的***配置* * *函数代码改为如下代码(增加了c盘文件可以访问):

//运行时调用此方法。使用此方法配置超文本传送协议请求管道public void Configure(IApplicationBuilder应用程序,IHostingEnvironment env){ var static file=new static file options();静态文件文件提供程序=new PhysicalFileProvider(@ ' c : \ ');//指定目录,这里指的是C盘,也可以指定其他目录应用程序.使用静态文件(静态文件);//使用默认文件夹网站根目录仅仅shi wwwroot对外可见应用程序.运行(异步(上下文)={等待上下文.回应。WriteAsync('你好,耶稣');});}c盘文件展示

运行效果

这样我们就可以访问任意目录下的文件了,那么问题来了,c盘中有个叫日志的文件,我们访问不了,原因是:服务器不能识别,怎么办?如何让服务器识别所有类型的文件呢?我们以。原木为后缀的文件为例

我们将***配置* * *改为一下内容:

//运行时调用此方法。使用此方法配置HTTP请求管道。public void Configure(IApplicationBuilder app,IHostingEnvironment env){ var static file=new static file options();静态文件。file provider=new PhysicalFileProvider(@ ' c : \ ');//指定目录,这里指的是c盘,也可以指定其他目录。//设置对应的文件类型(防止Mime类型出来,打开或404错误)。static file . serveunnknownflettypes=true;静态文件。DefaultContentType=' application/x-msdownload ';//设置默认的mime type varprovider=new file extensioncontenttyprovider();提供商。映射。添加('。日志','文本/纯文本');//设置对应的mimetype静态文件。contenttypeprovider=手动提供程序;app。usestatic files(static file);//使用默认文件夹wwwroot,只有shi wwwroot对外可见。//将指定目录中要访问的文件设置为end app . run(async(context)={ await context . response . write async(' hello Jesus ');});}我们默认不可识别的文件类型为‘application/x-msdownload’,也就是说,我们下载所有没有处理过的不可识别的类型。

提供商。映射。添加('。日志','文本/纯文本');//手动设置相应的MIME类型。我们手动增加了后缀文件类型的处理。日志,并将它们视为文本文件,即txt处理。

运行效果

未知文件(我们访问了789.ggg文件,但尚未处理)

处理的文件类型

这样,我们可以访问任何类型的静态文件,所以问题又来了。我想访问一个目录中的所有文件,也就是说,如果我访问一个目录呢?

NET Core中访问目录的功能默认是禁止的,需要手动开启。

步骤:

1.在配置服务功能中添加目录访问服务。

public void ConfigureServices(IServiceCollection services){ services。AddDirectoryBrowser();//使目录可以浏览(浏览所有文件和文件夹)}2。在配置功能中添加中间键和特定目录,在这里我们可以访问c盘下的所有目录

//将目录设置为browse start vardir=new directory browseoptions();迪尔。file provider=new PhysicalFileProvider(@ ' c : \ ');app。UseDirectoryBrowser(目录);//将目录设置为浏览结束,这样我们就可以访问C驱动器中的任何目录。效果如下:

Startup.cs文件的最终代码如下:

使用系统;使用系统。集合。通用;使用系统Linq .使用系统。线程化。任务;使用微软AspNetCore。建设者使用微软。托管;使用微软AspNetCore。超文本传送协议(Hyper Text Transport Protocol的缩写)使用微软。静态文件;使用微软。扩展。依赖注射;使用微软。扩展名。文件提供商命名空间StaticFileServer {公共类启动} {//此方法由运行时调用。使用此方法向容器添加服务。//有关如何配置应用程序的更多信息,请访问https://go.microsoft.com/fwlink/?LinkID=398940公共void ConfigureServices(IServiceCollection services){ services .AddDirectoryBrowser();//使目录可以被浏览(浏览所有的文件以及文件夹)} //此方法由运行时调用。使用此方法配置超文本传送协议请求管道公共空间配置(iappressionbuilder)应用程序,IHostingEnvironment env) { //设置目录可浏览start var dir=new directorybrowsrooptions();迪尔文件提供程序=new PhysicalFileProvider(@ ' c : \ ');应用程序.UseDirectoryBrowser(目录);//设置目录可浏览end //设置指定目录的文件可以被访问start var静态文件=新建静态文件选项();静态文件文件提供程序=new PhysicalFileProvider(@ ' c : \ ');//指定目录,这里指的是C盘,也可以指定其他目录//设置对应的文件类型(防止哑剧类型没事别出来,打不开或出现404错误)静态文件.ServeUnknownFileTypes=真静态文件DefaultContentType=' application/x-msdownload ';//设置默认哑剧类型定义变量提供程序=new file extensioncontenttype提供程序();提供商。映射。添加('。日志','文本/纯文本');//手动设置对应的哑剧类型静态文件ContentTypeProvider=providerapp .使用静态文件(静态文件);//使用默认文件夹网站根目录仅仅shi wwwroot对外可见//设置指定目录的文件可以被访问end app .运行(异步(上下文)={等待上下文.回应。WriteAsync('你好,耶稣');});} }}总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

版权声明:c# .净核心静态文件服务器的新人入门教程是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。