我希望能够注册考虑到资源的实际 url 的某些 url。具体来说:我的 Web API 文档的 Swagger 端点。
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 ,在这种情况下,Swagger 想在此处与其端点对话:
在生产或登台环境中,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()
in Startup.Configure()
)。
-S