
.net core 静态文件中间件
静态文件中间件的能力
- 支持指定相对路径
- 支持目录浏览
- 支持设置默认文档
- 支持多目录映射
目录结构
支持指定相对路径的访问
Startup.cs
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
app.UseStaticFiles();
使得 web root(默认为wwwroot)下的文件目录可以被访问。随后将展示如何通过使用 UseStaticFiles
将其他目录下的内容也向外提供服务。
运行测试
默认访问静态文件的index.html
app.UseDefaultFiles();
运行测试
一般默认文件的检索有
default.htm
default.html
index.htm
index.html
可以通过以下代码达到自定义默认路径的效果。
DefaultFilesOptions options = new DefaultFilesOptions();
options.DefaultFileNames.Clear();
//假设我们以 mydefault.html 为检索的对象
options.DefaultFileNames.Add("mydefault.html");
app.UseDefaultFiles(options);
浏览目录
添加目录服务
services.AddDirectoryBrowser();
启用网络应用目录浏览
app.UseDirectoryBrowser();
运行测试
映射其他目录和文件
添加 file 文件夹下的文件
app.UseStaticFiles(new StaticFileOptions {
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(),"file"))
});
运行测试
添加自定义路径访问
app.UseStaticFiles(new StaticFileOptions {
RequestPath = "/files",
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(),"file"))
});
运行测试
添加到访问目录中去
app.UseDirectoryBrowser(new DirectoryBrowserOptions
{
//推荐使用 new PathString("/files") 的方式
RequestPath = "/files",
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "file"))
});
运行测试
UseFileServer
UseFileServer 集合了 UseStaticFiles、UseDefaultFiles 以及 UseDirectoryBrowser
下面代码启用了静态目录和默认文件,但不允许直接访问目录:
app.UseFileServer();
下面代码启用了静态目录和默认文件,目录浏览的功能:
app.UseFileServer(enableDirectoryBrowsing:true);
如果要指定具体的目录下
app.UseFileServer(new FileServerOptions() {
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(),@"flie")),
RequestPath=new PathString("/files"),
EnableDirectoryBrowsing = true
});
在启动浏览目录之前,需要添加services.AddDirectoryBrowser();
目录的注册
FileExtensionContentTypeProvider
FileExtensionContentTypeProvider 类内包含一个将文件扩展名映射到 MIME 内容类型的集合。在下面的例子中,多个文件扩展名注册为已知的 MIME 类型,”.rtf” 被替换,”.mp4” 被移除
var provider = new FileExtensionContentTypeProvider();
provider.Mappings[".myapp"] = "application/x-msdownload";
provider.Mappings[".htm3"] = "text/html";
provider.Mappings[".image"] = "image/png";
provider.Mappings[".rtf"] = "application/x-msdownload";
provider.Mappings.Remove(".mp4");
app.UseStaticFiles(new StaticFileOptions
{
RequestPath = "/files",
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), "file")),
ContentTypeProvider = provider
});
当我们有其他不可识别 MIME 的时候我们可以默认当作其他类型进行处理。
例如:有不可识别 MIME 的时候,默认让它用 image/png 来识别。
app.UseStaticFiles(new StaticFileOptions
{
ServeUnknownFileTypes =true,
DefaultContentType = "image/png"
});
打造接口服务页
当我们访问接口只希望指定格式为接口,其他访问都为首页时我们可以这样做
app.MapWhen(context =>
{
return !context.Request.Path.Value.StartsWith("/api");
}, appBuilder =>
{
var option = new RewriteOptions();
option.AddRewrite(".*","/index.html",true);
appBuilder.UseRewriter(option);
appBuilder.UseStaticFiles();
});
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
评价
排名
2
文章
657
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 :
好是好,这个对效率影响大不大哇,效率高不高
一个bug让程序员走上法庭 索赔金额达400亿日元
剑轩 : 有点可怕
ASP.NET Core 服务注册生命周期
剑轩 :
http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术