У меня есть проект 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
вызывает мои обычные конечные точки.
Это только первое, что не работает, и выглядит не в том месте.