ASP.NET核心在启动时解析url



我希望能够注册某些考虑到资源实际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,在这种情况下,Swagger想在这里与它的端点对话:

http://localhost:5000/swagger/v1/swagger.json

在生产或阶段环境中,Web API将作为Web应用程序托管在IIS中的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(Startup.Configure()中的UseSwaggerUI())。

-S

该方法的文档表明,路径可以是完全限定的,也可以是相对于页面的。

在我的情况下,只删除路径的第一部分就足够了:

c.SwaggerEndpoint("v1/swagger.json", "API documentation");

相关内容

  • 没有找到相关文章

最新更新