如果没有引用Microsoft.AspNetCore.StaticFiles,需要先引用。不过一般.Net Core项目都已经包含了。
使用NuGet命令添加Microsoft.AspNetCore.StaticFiles引用:
Install-Package Microsoft.AspNetCore.StaticFiles
添加好引用以后,在Startup.cs中的Configure方法下添加如下代码:
public void Configure(IApplicationBuilder app){app.UseStaticFiles();//使用默认文件夹wwwrootapp.Run(async (context) =>{await context.Response.WriteAsync("Hello World!");});}
接着在wwwroot文件夹(没有的话可以自己新建一个文件夹,取名wwwroot)中添加一张图:NET-Core.png。
程序运行后访问http://localhost:端口号/NET-Core.png ,就会在页面上显示这张图片
如果不想使用默认wwwroot文件夹,可以使用StaticFileOptions来设置指定目录
具体代码如下:
public void Configure(IApplicationBuilder app){//更改默认文件夹 (StaticFileOptions方法)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:*/readme.txt,如下图所示:

成功浏览readme.txt文件。
如果我们需要浏览所有文件夹及文件,就要用到UseDirectoryBrowser, 下面代码是浏览C盘的所有文件:
public void ConfigureServices(IServiceCollection services){//使用UseDirectoryBrowser ,需要在这里加入services.AddDirectoryBrowser();services.AddDirectoryBrowser();}// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.public void Configure(IApplicationBuilder app){//app.UseStaticFiles();//使用默认文件夹wwwrootvar dir = new DirectoryBrowserOptions();dir.FileProvider = new PhysicalFileProvider(@"C:\");app.UseDirectoryBrowser(dir);//更改默认文件夹 (StaticFileOptions方法)var staticfile = new StaticFileOptions();staticfile.FileProvider = new PhysicalFileProvider(@"C:\");//指定目录,这里指C盘,也可以是其他目录//手动设置MIME Type,或者设置一个默认值, 以解决某些文件MIME Type文件识别不到,出现404错误staticfile.ServeUnknownFileTypes = true;staticfile.DefaultContentType = "application/x-msdownload";//设置默认MIME Typevar provider = new FileExtensionContentTypeProvider();//使用一组默认映射创建新的提供程序provider.Mappings.Add(".log", "text/plain");//手动设置对应MIME Typestaticfile.ContentTypeProvider = provider; //将文件映射到内容类型app.UseStaticFiles(staticfile);app.Run(async (context) =>{await context.Response.WriteAsync("Hello World!");});}
手动设置MIME Type 是为了防止有些文件MIME Type识别不出来 就会出现404错误。也可以给这些未识别的设置一个默认值解决
设置好后,对于未识别的,默认为application/x-msdownload,浏览器会下载这些文件,这样.log就被手动设置为文本方式,浏览器会将其展示出来。这样我们也就实现了一个简单的文件服务器。如果想用手机查看电脑的图片或者视频等文件,则将程序加一句代码就可以实现了:在Program.cs中
public static void Main(string[] args){var host = new WebHostBuilder().UseKestrel().UseContentRoot(Directory.GetCurrentDirectory()).UseIISIntegration().UseUrls("http://*:5000") //加上这个就能通过http://ip5000访问.UseStartup<Startup>().Build();host.Run();}
这样在同一局域网内,在手机上使用浏览器访问http://ip:5000,就能访问电脑中C盘的文件了.
