【发布时间】:2018-07-07 00:17:30
【问题描述】:
我有一个 ASP.NET Web API Core 2 项目,它使用 Swashbuckle.AspNetCore nuget 将 swagger UI 添加到我的解决方案中。
当我在调试器中运行它或在 IIS 中托管它时,swagger UI 会很好地出现,并且一切都按预期工作。
但是当我将我的网站代理放入 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: NOT FOUND - 服务器没有找到任何匹配的 请求的 URI(统一资源标识符)。
(XHR) 获取 - https://mysite.apigee.net/swagger/v1/swagger.json
它已经完全删除了站点路径。当我添加时
app.UseSwaggerUI(c => { c.SwaggerEndpoint("../swagger/v1/swagger.json", "My Web API v1"); });
它出现了招摇的 UI,但它现在可以进行的调用正在删除站点前缀。例如,
https://mysite.apigee.net/myapp/about 变为 https://mysite.apigee.net/about
应该发生的是
https://mysite.apigee.net/myapp/swagger 调出招摇用户界面https://mysite.apigee.net/myapp/swagger/v1/swagger.json 为我提供 JSONhttps://mysite.apigee.net/myapp/about 调用我的正常端点。
它只是第一个不起作用,它看起来在错误的地方。
【问题讨论】:
-
您是否尝试过使用
{apigeehost}/{basepath }/swagger访问swagger? -
我不确定我的基本路径是什么。我试过
{apigeehost}/swagger,这给了我上面的错误。 -
如果直接访问,您的其他端点 api 端点是否工作,例如GET 请求?
-
是的,所有其他端点都按预期工作。
-
此外,直接访问 json 再次按预期工作。所以它实际上是找不到它的 UI。
标签: c# asp.net-core-2.0 swagger-ui apigee