У меня есть Swashbuckle в моем проекте веб-API.Я хочу, чтобы пользовательский обработчик вызывался только тогда, когда пользователь пытается попасть на страницу пользовательского интерфейса.Я не хочу добавлять обработчик в конвейер.
Я думал, что-то вроде этого может работать, но это не так:
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "SwaggerUI",
routeTemplate: "docsite/{*assetPath}",
defaults: null,
constraints: null,
handler: new MyHandler() { InnerHandler = new HttpControllerDispatcher(config) }
Я использую атрибуты маршрута везде в проектепоэтому я сначала сопоставляю эти атрибуты.
Моя конфигурация swagger использует
.EnableSwaggerUi("docsite/{*assetPath}",c =>
, следовательно, маршрут документа.
Я не хочу добавлять обработчик в конвейерпотому что я не хочу, чтобы его вызывали при каждом вызове веб-API.Я использую его для ограничения доступа к пользовательскому интерфейсу Swagger.
Также я использую OWIN для аутентификации одного конкретного API, поэтому я получаю эту ошибку при попытке вызвать этот API
The 'DelegatingHandler' list is invalid because the property 'InnerHandler' of 'MyHandler' is not null.
Parameter name: handlers
Понял, что я могу избежать ошибки, просто следя за тем, чтобы обработчик происходил только тогда, когда я делаю хитрый UI-маршрут.
Кто хочет помочь!