如何从 ASP.NET Core 的静态文件中排除文件夹?
How do I exclude a folder from ASP.NET Core's static files?
我在 "wwwroot"
下有一个文件夹,我不想在 returning 静态文件时包含它。
我想 return "wwwroot"
下的各种目录(例如 "wwwroot/images"
),这个中间件步骤可以实现:
app.UseStaticFiles();
我可以通过这个 StaticFileOptions
来配置 returned.
我想排除一个目录(例如 "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
仅在应用上下文过滤器时继续到下一个中间件
我在 "wwwroot"
下有一个文件夹,我不想在 returning 静态文件时包含它。
我想 return "wwwroot"
下的各种目录(例如 "wwwroot/images"
),这个中间件步骤可以实现:
app.UseStaticFiles();
我可以通过这个 StaticFileOptions
来配置 returned.
我想排除一个目录(例如 "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
仅在应用上下文过滤器时继续到下一个中间件