【发布时间】:2014-07-14 17:24:27
【问题描述】:
我正在寻找一种简单的方法来对 Web API 中给定路由的所有请求以及该路由中的所有端点返回 404 错误。在我的场景中,我将有一个配置标志来打开和关闭它。它是一个使用 Swagger/Swashbuckle 的文档端点,并且希望能够将其打开和关闭作为各种功能切换。
<add key="EnableDocumentation" value="true|false" />
理想情况下,对于以 /swagger 开头的所有路由(包括 /swagger/ui/index.html),如果上述值为 false
,我想返回 404我在 HttpConfiguration.Routes 中尝试了 IgnoreRoute,但这不适用于比指定级别更深的路由。如果我忽略/swagger,仍然可以访问/swagger/ui/index.html
有什么好的方法可以做到这一点吗?
谢谢!
【问题讨论】:
-
类似的东西必须来自 Swagger/Swashbuckle。如果路由存在,它将被返回。服务器就是这样工作的。您需要从本质上禁用此插件的路由表中的挂钩,以便无法匹配任何内容,这意味着使用它们提供的某些方法,或者直接禁用整个机器。
-
@ChrisPratt 感谢您的评论。很有意思。您是否知道是否有一种方法可以定义具有更高优先级的 /swagger 路由,它本质上会做同样的事情?或者这只会导致其他问题?谢谢!
-
是的,如果这在您的 RouteConfig 中,您可以在该路由之前添加一个路由。由于路由是自上而下处理的,它总是会先捕获。然后你可以从那里返回一个 404。
-
谢谢@ChrisPratt。会试一试!
标签: c# asp.net .net asp.net-mvc asp.net-web-api