2017-08-16 70 views
3

我有一个在Pivotal Cloud代工厂托管的Web API;其中包括它的Swagger文档。SwaggerUI向API发出请求时生成一个端口号。有什么办法可以阻止这种行为?

但是每当我试图测试任何API端点,扬鞭提出请求URL端口号:端口主机后,这是防止连接进行到API端点,因此没有数据回。出于某种原因,关键托管的API不适合使用端口号;而只是路由网址似乎工作正常。

我正在主持一个ASP.NET Web API并使用Swashbuckle Swagger Nuget Package来生成文档。

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

回答

0

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

我遇到了这个完全相同的问题。我发现了Swashbuckle的Git回购本文档:

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

里面你App_Start/SwaggerConfig.cs文件,你需要取消注释行c.RootUrl(req => GetRootUrlFromAppConfig())和实施方法GetRootUrlFromAppConfig()以便它返回正确的根网址为您的应用(见下图)

modify the SwaggerConfig.cs file

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

+0

我想指出如果你需要获得请求Uri(例如你想将它传递给一个方法,比如我在这里完成的方法),你可以使用req.RequestUrl,如下所示: c.RootUrl(req => YourCustomMethodToGetTheBaseUrl req.RequestUri)) – mknopf

相关问题