我希望能夠註冊某些URL,考慮到資源的實際URL。具體來說:我的Web API文檔的Swagger端點。ASP.NET Core在啓動時解析url?
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseMvc();
app.UseSwagger();
app.UseSwaggerUi(c =>
{
c.SwaggerEndpoint($"/swagger/v1/swagger.json", "API documentation");
//c.SwaggerEndpoint($"/TheGreatestWebAPI/swagger/v1/swagger.json", "API documentation");
});
}
在我的開發環境,我會被主辦http://localhost:5000在Web PI,在這種情況下,揚鞭想跟其端點位置:
在生產或臨時環境中,Web API將作爲IIS中的Web應用程序託管,類似於https://test.contoso.com/TheGreatestWebAPI
,並且Swagger將要與此交談:
https://test.contoso.com/TheGreatestWebAPI/swagger/v1/swagger.json
...因此後者註釋的終點登記。
我想什麼做的是用這樣的:
c.SwaggerEndpoint($"~/swagger/v1/swagger.json", "API documentation");
這應該是熟悉的人誰的二手ASP.NET Web表單Page.ResolveUrl()
任何人,從我所看到的相同的功能應可通過UrlHelper.Content()
獲得。但是,該函數需要一個UrlHelper類的實例,並且相關的構造函數需要ActionContext實例。
我很遺憾,在這種情況下如何正確實例化UrlHelper
(UseSwaggerUI()
在Startup.Configure()
)。
-S
這一工程樣的。除去領先的「/ swagger」和「/ TheGreatestAPI/swagger」實際上導致定義端點在'https:// localhost:5000/swagger/v1/swagger.json'和'https://test.contoso .com/TheGreatestWebAPI/swagger/v1/swagger.json',分別。然而,'https:// localhost:5000/swagger/index.html'上的標準Swagger GUI頁面試圖從'https:// localhost:5001/swagger/index.html/v1/swagger.json'加載 - 它本質上擴展了GUI **文件名**與相對url而不是**文件夾** –
@SigurdGarshol我看到..我通常只是去'/ swagger',不要直接去'/ swagger/index .html「,但如果它在某些時候不起作用,那絕對不是理想的。你也可以爲網站的根目錄添加一個配置值,並在配置swagger時通過它。 – markt
也許這只是我們現在使用的swagger版本,但/ swagger會自動重定向到/swagger/index.html。所以我們沒有解決方法。 :( –