一、/就是wwwroot的根目录
app.UseDefaultFiles();//默认就是根目录的index,DefaultFileNames里面包含了index
app.UseStaticFiles();// /就是wwwroot的根目录
会导航到wwwroot下的index.html
二、目录形式显示文件
1.在ConfigureServices注入
代码如下(示例):
services.AddDirectoryBrowser();
2.在Configure配置
代码如下(示例):
app.UseDirectoryBrowser();
结果如下:

三、文件目录映射为url地址
代码如下(示例):
string path = Path.Combine(Directory.GetCurrentDirectory(), "file");
app.UseStaticFiles(new StaticFileOptions()
{
RequestPath = "/files",//文件目录映射为url地址
FileProvider = new PhysicalFileProvider(path)
});
四、MapWhen形式
代码如下(示例):
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();
});
输出响应头如下:

Run方式:
app.MapWhen(context =>
{
return !context.Request.Path.Value.StartsWith("/api");
}, appBuilder =>
{
appBuilder.Run(async requestDelegate =>
{
var file = env.WebRootFileProvider.GetFileInfo("index.html");
requestDelegate.Response.ContentType = "text/html";
using (var fileSystem = new FileStream(file.PhysicalPath, FileMode.Open, FileAccess.Read))
{
await StreamCopyOperation.CopyToAsync(fileSystem, requestDelegate.Response.Body, null, bufferSize, requestDelegate.RequestAborted);
}
});
});
响应头如下:

结论:Run方式没有cache相关的响应头。

本文详细介绍了ASP.NET Core中静态文件中间件的使用,包括将/wwwroot作为根目录、目录形式显示文件、文件目录映射为URL、使用MapWhen方法,以及源码下载,帮助开发者更好地理解和配置静态文件服务。
170万+

被折叠的 条评论
为什么被折叠?



