.NET Core下的文件文档服务

来源:互联网 发布:如何提高淘宝店信誉 编辑:程序博客网 时间:2024/06/05 08:14

.NET Core下的文件文档服务

默认文档服务

设置默认首页可以给网站的每个访问者提供一个起始页
为使站点能提供默认页,避免用户输入完整 URI,须在 Startup.Configure 中调用 UseDefaultFiles 扩展方法。

//举个栗子,设置默认页mydefaultpublic void Configure(IApplicationBuilder app){     DefaultFilesOptions options = new DefaultFilesOptions();     options.DefaultFileNames.Clear();     options.DefaultFileNames.Add("mydefault.html");    app.UseDefaultFiles(options);    app.UseStaticFiles();}

注意:UseDefaultFiles 必须在 UseStaticFiles 之前调用。UseDefaultFiles 只是重写了URL,并没有真的提供这样一个文件。所以你必须开启静态文件中间件(UseStaticFiles)来提供这个文件。

UseFileServer

UseFileServer包含了 UseStaticFiles 、UseDefaultFiles 和 UseDirectoryBrowser 的功能。

以下代码启用了静态文件和默认文件,但不允许直接访问目录。

app.UseFileServer();

下面的代码启用了静态文件、默认文件和目录浏览功能。

app.UseFileServer(enableDirectoryBrowsing: true);

警告:接提供目录浏览功能是有很大的安全风险的,如果想让特定的文件可以被浏览,那么需要设置一个FileServerOptions对象传递给UseFileServer。

//path.Combine(),将2个字符串合成一个路径,该路径作为可以被浏览的路径;RequestPath为请求时在地址栏中输入的路径,该路径映射到FileProvider中设置的实际路径public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory){    app.UseStaticFiles();    app.UseFileServer(new FileServerOptions()                                           {                                                                                       FileProvider = new PhysicalFileProvider(                                                Path.Combine(Directory.GetCurrentDirectory(), @"MyStaticFiles")),               RequestPath = new PathString("/StaticFiles"),                                      EnableDirectoryBrowsing = true                                                  });                                                                            }public void ConfigureServices(IServiceCollection services){    services.AddDirectoryBrowser();}

如果在 MyStaticFiles 目录下没有默认命名的文件,则请求http://< app>/StaticFiles 将会得到MyStaticFiles的目录。

总结

ASP.NET 静态文件中间件能够支持超过 400 种已知文件内容类型。如果用户请求一个未知的文件类型,静态文件中间件将返回 HTTP 404(未找到)响应。如果启用目录浏览,该文件的链接将会被显示,但 URI 会返回一个 HTTP 404 错误。

UseDirectoryBrowserUseStaticFiles 可能会泄密。最好不要在生产环境开启目录浏览。要小心那些开启了UseStaticFiles或 UseDirectoryBrowser 的目录(使得其子目录都可被访问)。最好将公开的内容放在像wwwroot 这样的目录中,远离应用程序视图、配置文件等。

原创粉丝点击