asp.net-core - 如何从 ASP.NET Core 的静态文件中排除文件夹?
问题描述
我有一个文件夹"wwwroot"
,在返回静态文件时我不想包含该文件夹。
我想返回"wwwroot"
(例如"wwwroot/images"
)下的各种目录,这个中间件步骤可以实现:
app.UseStaticFiles();
我可以通过它StaticFileOptions
来配置返回的内容。
我想排除一个目录(例如"wwwroot/node_modules"
),并且不允许从中提供任何 statif 文件。
似乎没有可以使用的过滤器StaticFileOptions
- 我应该如何应用该过滤器?
解决方案
不要在静态文件中间件上寻找选项 -任何中间件都可以使用MapWhen
或过滤UseWhen
。这允许您只为通过条件的路由注册中间件。
例如,要排除"wwwroot/node_modules"
:
app.UseWhen(
context => !context.Request.Path.StartsWithSegments("/node_modules"),
appBuilder => appBuilder.UseStaticFiles());
这现在只会在路由不以 . 开头时应用静态文件中间件"/node_modules"
。
UseWhen
如果失败则进入下一个中间件MapWhen
如果上下文过滤器适用,则仅继续下一个中间件