、
首先新建一个ASP.NET Core项目,选择空的模板。
使用NuGet命令添加Microsoft.AspNetCore.StaticFiles引用:
Install-Package Microsoft.AspNetCore.StaticFiles
添加好引用以后,在Startup.cs中的Configure方法下添加如下代码:
public void Configure(IApplicationBuilder app)
{
app.UseStaticFiles();//使用默认文件夹wwwroot
app.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)
{
app.Run(async (context) =>
{ //使用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();//使用默认文件夹wwwroot
var dir = new DirectoryBrowserOptions();
dir.FileProvider = new PhysicalFileProvider(@"C:\");
app.UseDirectoryBrowser(dir);
//更改默认文件夹 (StaticFileOptions方法)
var staticfile = new StaticFileOptions();
staticfile.FileProvider = new PhysicalFileProvider(@"C:\");//指定目录,这里指C盘,也可以是其他目录
app.UseStaticFiles(staticfile);//使用默认文件夹wwwroot
//手动设置MIME Type,或者设置一个默认值, 以解决某些文件MIME Type文件识别不到,出现404错误
staticfile.ServeUnknownFileTypes = true;
staticfile.DefaultContentType = "application/x-msdownload";//设置默认MIME Type
var provider = new FileExtensionContentTypeProvider();//使用一组默认映射创建新的提供程序
provider.Mappings.Add(".log", "text/plain");//手动设置对应MIME Type
staticfile.ContentTypeProvider = provider; //将文件映射到内容类型
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()
.Build();
host.Run();
}
这样在同一局域网内,在手机上使用浏览器访问http://ip:5000,就能访问电脑中C盘的文件了.
在苹果电脑中遇到了一个奇怪的问题,就是用vs2017来运行调试启动此项目,无法用ip绑定来访问。
http://192.168.2.104:5000/
但我cd 到网站所在的目录,然后用命令行运行dotnet run --urls “http://*:8080” 后就可以访问了: