Swagger не работает при запуске через APIGEE - PullRequest
0 голосов
/ 30 мая 2018

У меня есть проект ASP.NET Web API Core 2, который использует Swashbuckle.AspNetCore nuget, чтобы добавить в мое решение хитрый пользовательский интерфейс.Когда я запускаю это в отладчике или размещаю в IIS, пользовательский интерфейс Swagger работает хорошо, и все работает как положено.

Но когда я помещаю прокси-сервер для своего веб-сайта в APIGEE, появляется

Ошибка выборки не найдена /swagger/v1/swagger.json

Вот соответствующие части моего проекта

services.AddSwaggerGen(c => {
    c.SwaggerDoc("v1", new Info {
        Version = "v1",
            Title = "My Web API",
            Description = "An awesome API.",
            TermsOfService = "",
            Contact = new Contact {
                Name = "...",
                    Email = "...",
                    Url = "http://..."
            }
    });
});
services.AddSwaggerGen(c => { c.IncludeXmlComments(GetXmlCommentsPath("Project1.xml")); });
services.AddSwaggerGen(c => { c.IncludeXmlComments(GetXmlCommentsPath("Project2.xml")); });

и

app.UseSwagger();
app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "My Web API v1"); });

Как я могу включить swagger, когда он работает через APIGEE?

ОБНОВЛЕНИЕ
Консоль отладки показывает ошибку.

HTTP404: НЕ НАЙДЕН - Сервер не нашел ничего, соответствующего запрошенному URI (универсальному идентификатору ресурса).
(XHR) GET - https://mysite.apigee.net/swagger/v1/swagger.json

Полностью удален путь к сайту.Когда я добавил

app.UseSwaggerUI(c => { c.SwaggerEndpoint("../swagger/v1/swagger.json", "My Web API v1"); });

, появился пользовательский интерфейс, но звонки, которые он может сделать, теперь сбрасывают префикс сайта.Например,

https://mysite.apigee.net/myapp/about становится https://mysite.apigee.net/about

То, что должно произойти, это

https://mysite.apigee.net/myapp/swagger вызывает swagger ui
https://mysite.apigee.net/myapp/swagger/v1/swagger.json получает меня JSON
https://mysite.apigee.net/myapp/about вызывает мои обычные конечные точки.

Это только первое, что не работает, и выглядит не в том месте.

1 Ответ

0 голосов
/ 06 июля 2018

У меня была такая же проблема.Вам нужно добавить базовый путь Apigee к конечной точке Swagger.В этом примере «myapp» является базовым путем.Мне также пришлось нажать Ctrl + F5 в браузере Chrome, чтобы перезагрузить страницу, чтобы увидеть изменения.

app.UseSwaggerUI(c => { c.SwaggerEndpoint("/myapp/swagger/v1/swagger.json", "My Web API v1"); });
...