MapHttpRoute到Swashbuckle Swagger UI使用自定义处理程序

时间:2018-05-18 21:46:49

标签: c# asp.net-web-api2 swagger-ui asp.net-web-api-routing swashbuckle

我的网络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路径时发生来避免错误。

谁愿意帮忙!

0 个答案:

没有答案