我的网络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

想象我可以通过确保处理程序仅在我使用swagger ui路由时发生来避免错误 .

谁想帮忙!