2017-08-16 370 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

相關問題