我的网络api项目中有Swashbuckle。我想只在用户试图点击swagger ui页面时才调用自定义处理程序。我不想将处理程序添加到管道中。
我认为这样的事情可能有效,但事实并非如此:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "SwaggerUI",
routeTemplate: "docsite/{*assetPath}",
defaults: null,
constraints: null,
handler: new MyHandler() { InnerHandler = new HttpControllerDispatcher(config) }
我在项目中的其他地方使用路由属性,因此我首先映射这些属性。
我的招摇配置正在使用
.EnableSwaggerUi("docsite/{*assetPath}",c =>
因此是docsite路线。
我不想将处理程序添加到管道中,因为我不希望每次调用web api都调用它。我正在使用它来限制对swagger UI的访问。
此外,我正在使用OWIN验证一个特定的api,所以当我尝试调用该api时出现此错误
The 'DelegatingHandler' list is invalid because the property 'InnerHandler' of 'MyHandler' is not null.
Parameter name: handlers
想象一下,我可以通过确保处理程序仅在我使用swigger ui路径时发生来避免错误。
谁愿意帮忙!