静态文件中间件 UseStaticFiles()
默认情况下,静态文件(如HTML、CSS、图像和JavaScript)是ASP.NETCore应用直接提供给客户端的资产。
静态文件存储在项目的Web根目录中。默认目录为 [content root}/wwwroot,但可通过UseWebRoot方法更改目录。
使用
在项目中新建 wwwroot/images 目录,放上一张 bg.png a图片(其他也可)
注意,将文件的 复制到输出目录 改为:始终复制
app.UseStaticFiles(); // 启动静态文件中间件
完成,访问 hxxp://xxx/images/bg.png
修改 wwwroot
修改默认的 wwwroot 目录 为 MyStaticFiles,并加入请求前缀路径:
app.UseStaticFiles(new StaticFileOptions(){
FileProvider = new PhysicalFileProvider(
Path.Combine(builder.Environment.ContentRootPath, "MyStaticFiles")),
RequestPath = "pppp" // 请求前缀路径
}); // 启动静态文件中间件
请求:hxxp://xxx/pppp/MyStaticFiles/bg.png
即可
目录浏览
允许在指定目录中列出目录。出于安全考虑,目录浏览默认处于禁用状态。
通过 AddDirectoryBrowser 和 UseDirectoryBrowser 启用目录浏览:
builder.Services.AddDirectoryBrowser(); // 务必要加上这个
var fileProvider = new PhysicalFileProvider(Path.Combine(builder.Environment.WebRootPath, "images"));
var requestPath="/MyImages";
// Enable displaying browser links.
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = fileProvider,
RequestPath =requestPath
});
app.app(new DirectoryBrowseroptions
FileProvider = fileProvider,
ReguestPath = requestPath
);
默认文件中间件 UseDefaultFiles()
会默认匹配 :
- index.html
- index.htm(默认)
- default.html
- default.htm
注意顺序,先 UseDefaultFiles() 再 UseStaticFiles()
清空默认的,加入自己的:
DefaultFilesOptions defaultFilesOptions = new DefaultFilesOptions();
defaultFilesOptions.DefaultFileNames.Clear();
defaultFilesOptions.DefaultFileNames.Add("zdy.html");
app.UseDefaultFiles(defaultFilesOptions);
这个代码,也可以用下面的 UseFileServer() 来实现;
UseFileServer() 中间件
这个中间件结合了上面的 UseStaticFiles() UseDefaultFiles() 和 UseDirectoryBrowser() 中间件的功能;
FileServerOptions fileServerOptions = new FileServerOptions();
fileServerOptions.DefaultFilesOptions.DefaultFileNames.Clear()
fileServerOptions.DefaultFilesOptions.DefaultFileNames.Add("zdy.html");
app.UseFileServer(fileServerOptions);