加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > Asp教程 > 正文

Asp.Net Core 中的“虚拟目录”实现

发布时间:2021-05-30 03:05:26 所属栏目:Asp教程 来源:互联网
导读:副标题#e# 现在部署Asp.Net Core应用已经不再限制于Windows的IIS上,更多的是Docker容器、各种反向代理来部署。也有少部分用IIS部署的,IIS部署确实是又快又简单,图形化操作三下五除二就可以发布好一个系统了。在过去Asp.Net MVC 项目部署的时候,还常常使

public class MyFileProvider : PhysicalFileProvider { public MyFileProvider(string root, string alias) : base(root) { this.Alias = alias; } public MyFileProvider(string root, Microsoft.Extensions.FileProviders.Physical.ExclusionFilters filters, string alias) : base(root, filters) { this.Alias = alias; } /// <summary> /// 别名 /// </summary> public string Alias { get; set; } }

调整Startup.ConfigureServices和Startup.Configure:

public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.Configure<VirtualPathConfig>(Configuration); var config = Configuration.Get<VirtualPathConfig>().VirtualPath; config.ForEach(f => { services.AddSingleton(new MyFileProvider(f.RealPath,f.Alias)); }); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } var config = Configuration.Get<VirtualPathConfig>().VirtualPath; config.ForEach(f => { app.UseStaticFiles(new StaticFileOptions() { FileProvider = new PhysicalFileProvider(f.RealPath), RequestPath =f.RequestPath }); }); app.UseRouting(); app.UseAuthorization(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }

最后,调整调用方式,即可。

[HttpGet] public object GetFiles([FromServices] IEnumerable<MyFileProvider> fileProviders) { var file = fileProviders.FirstOrDefault(x=>x.Alias=="first").GetFileInfo("mybook.txt"); if (file.Exists) { return ReadTxtContent(file.PhysicalPath); } return 0; }

最后

  物理文件系统的抽象通过PhysicalFileProvider这个FileProvider来实现,借助IFileProvider的特点,其实可以扩展实现轻量“云盘”的功能了,而不仅仅只是实现IIS虚拟目录功能。搞定,今晚不加班!

到此这篇关于Asp.Net Core 中的“虚拟目录”实现的文章就介绍到这了,更多相关Asp.Net Core 虚拟目录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读