如何从ASP.NET Core的静态文件中排除文件夹?

时间:2018-06-26 07:47:32

标签: asp.net-core static-files asp.net-core-middleware

我在"wwwroot"下有一个文件夹,该文件夹在返回静态文件时不希望包含在内。

我想返回"wwwroot"下的各种目录(例如"wwwroot/images"),并且此中间件步骤启用了该功能:

app.UseStaticFiles(); 

我可以传递此StaticFileOptions来配置返回的内容。

我想排除目录(例如"wwwroot/node_modules"),并且不允许从该目录中提供任何statif文件。

似乎没有可以在StaticFileOptions上使用的过滤器-我该如何应用该过滤器?

1 个答案:

答案 0 :(得分:2)

不要在静态文件中间件上寻找选项-可以使用MapWhenUseWhen过滤任何中间件。这样,您就只能为通过条件的路由注册中间件。

例如,排除"wwwroot/node_modules"

app.UseWhen(
    context => !context.Request.Path.StartsWithSegments("/node_modules"),
    appBuilder => appBuilder.UseStaticFiles());

现在,仅当路由不是以"/node_modules"开头时,才应用静态文件中间件。

  • UseWhen如果失败,将进入下一个中间件
  • MapWhen仅在应用上下文过滤器时才继续使用下一个中间件