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

Kei*_*ith 2 static-files asp.net-core asp.net-core-middleware

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

我想返回"wwwroot"(例如"wwwroot/images")下的各种目录,这个中间件步骤可以实现:

app.UseStaticFiles(); 
Run Code Online (Sandbox Code Playgroud)

我可以通过它StaticFileOptions来配置返回的内容。

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

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

Kei*_*ith 6

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

例如,要排除"wwwroot/node_modules"

app.UseWhen(
    context => !context.Request.Path.StartsWithSegments("/node_modules"),
    appBuilder => appBuilder.UseStaticFiles());
Run Code Online (Sandbox Code Playgroud)

现在,这将仅在路由不以"/node_modules".

  • UseWhen 如果失败,则进入下一个中间件
  • MapWhen 如果上下文过滤器适用,则仅继续到下一个中​​间件