我希望能够注册考虑到资源的实际网址的某些网址。具体来说:我的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网络表单的人来说,这应该是熟悉的。 Page.ResolveUrl()
,我可以通过UrlHelper.Content()
获得相同的功能。但是,该函数需要UrlHelper类的实例,相关的构造函数需要ActionContext实例。
我不知道如何在此上下文中正确实例化UrlHelper
(UseSwaggerUI()
中的Startup.Configure()
)。
-S
答案 0 :(得分:0)
该方法的文档说明路径可以是完全限定的或相对于页面。
就我而言,只需删除路径的第一部分就足够了:
c.SwaggerEndpoint("v1/swagger.json", "API documentation");