• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NET Core StaticFiles中间件修改wwwroot(转载)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

ASP.NET Core 开发,中间件(StaticFiles)的使用,我们开发一款简易的静态文件服务器。
告别需要使用文件,又需要安装一个web服务器。现在随时随地打开程序即可使用,跨平台,方便快捷。
前一篇讲解了中间件的开发,了解了中间件的知识。
下面我们就来使用StaticFiles 开发一款简易静态文件服务器。还可以直接运行纯静态的网站。
新建的ASP.NET Core 项目,不是空的,也就会自带StaticFiles 。wwwroot 就是靠这个中间件读取的。

 

 

使用StaticFiles 中间件


 

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

 

在项目中添加 Microsoft.AspNetCore.StaticFiles 的Nuget包引用

Microsoft.AspNetCore.StaticFiles

 

添加好引用以后,我们在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 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盘,也可以是其它目录
    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 就可以访问。这样就能访问电脑的文件。

 

 

原文链接

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Asp.net网页上嵌入Media Player播放发布时间:2022-07-10
下一篇:
【转载】ASP.NET MVC HtmlHelper类的辅助和扩展方法发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap