net开发学习:目录浏览
目录浏览允许在指定目录中列出目录。出于安全考虑,目录浏览默认处于禁用状态。
通过以下方式启用目录浏览:
注册目录浏览服务:Startup.ConfigureServices 中的 AddDirectoryBrowser。
目录浏览设定:Startup.Configure 中的 UseDirectoryBrowser。
新增空白web模板
dotnet new web
代码实现:
public void ConfigureServices(IServiceCollection services)
{
services.AddDirectoryBrowser(); //不注册目录浏览服务似乎也不影响功能实现
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
//using System.IO;
//using Microsoft.Extensions.FileProviders;
app.UseStaticFiles(new StaticFileOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(env.WebRootPath,"images")),
RequestPath = "/MyImages"
});
app.UseDirectoryBrowser(new DirectoryBrowserOptions
{
FileProvider = new PhysicalFileProvider(
Path.Combine(env.WebRootPath, "images")),
RequestPath = "/MyImages"
});
}
错误情况:
- Project 中缺少 env.WebRootPath 指向的 wwwroot 目录
Application startup exception
System.ArgumentNullException: Value cannot be null. (Parameter 'path1')
at System.IO.Path.Combine(String path1, String path2)
- wwwroot 目录下缺少 images 目录
Application startup exception
System.IO.DirectoryNotFoundException: E:\test\wwwroot\images\
at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root, ExclusionFilters filters)
at Microsoft.Extensions.FileProviders.PhysicalFileProvider..ctor(String root)
- 缺少 app.UseStaticFiles 设定,会无法访问具体的静态文件
效果演示:
上述代码允许使用 URL http://localhost:5000/MyImages 浏览 wwwroot/images 文件夹的目录,并链接到每个文件和文件夹: