SwaggerUI 在向 API 发出请求时会生成一个端口号。有没有办法阻止这种行为?

soh*_*oes 5 javascript cloud-foundry swagger-ui

我有一个托管在 Pivotal Cloud 代工厂的 Web API;其中包括它的 Swagger 文档。

但是,每当我尝试测试任何 API 端点时,Swagger 都会在请求 URL 中放入一个端口号:port在主机之后,这会阻止与 API 端点建立连接,因此不会返回任何数据。出于某种原因,pivotal 上托管的 API 对端口号不满意;而只是路由 url 似乎工作正常。

我正在托管一个 ASP.NET Web API 并使用 Swashbuckle Swagger Nuget 包来生成文档。

有什么办法可以强制 Swagger 在发送 api 请求时删除端口号?

mkn*_*opf 2

我知道这是一个相当晚的回复,但我添加它,以便将来遇到此问题的其他人希望能够快速找到解决方案。

我遇到了同样的问题。我在 Swashbuckle Git 存储库上找到了此文档:

默认情况下,服务根 URL 是从用于访问文档的请求推断出来的。但是,在某些情况下(例如代理和负载平衡环境),此问题可能无法正确解决。您可以通过提供自己的代码来确定根 URL 来解决此问题。

在文件中,App_Start/SwaggerConfig.cs您需要取消注释该行c.RootUrl(req => GetRootUrlFromAppConfig())并实现该方法GetRootUrlFromAppConfig(),以便它返回应用程序的正确根 URL(请参见下面的屏幕截图)

修改SwaggerConfig.cs文件

以下是一些实施示例GetRootUrlFromAppConfig(),您需要确定哪一个最适合您的具体情况: https: //github.com/domaindrivendev/Swashbuckle/issues/705

  • 我想指出的是,如果您需要获取请求 Uri(例如您想将其传递到一种方法,例如我在这里完成的方法),您可以使用 req.RequestUrl,如下所示: c.RootUrl(req => YourCustomMethodToGetTheBaseUrl(req.RequestUri)) (2认同)