【发布时间】:2019-03-19 16:51:43
【问题描述】:
我有一个 api 站点使用 swagger 来公开 api。 dotnet core 版本是 2.1,swagger 是 Swashbuckle.AspNetCore 3.0.0。 我的 api 站点位于反向代理 (nginx) 后面,nginx url 是 https://www.aa.com/chat,映射到后端服务器 http://127.0.0.1:5003/ 我的招摇配置是: 配置服务:
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "aa.IM.CustomerApi", Version = "v1" });
var basePath = Path.GetDirectoryName(typeof(Program).Assembly.Location);
var controllerXmlPath = Path.Combine(basePath, "aa.IM.CustomerApi.xml");
var entityXmlPath = Path.Combine(basePath, "aa.IM.Entity.xml");
c.IncludeXmlComments(controllerXmlPath);
c.IncludeXmlComments(entityXmlPath);
//c.DescribeAllEnumsAsStrings();
});
配置:
app.UseSwagger(c =>
{
});
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("v1/swagger.json", "aa.IM.CustomerApi");
});
然后,我可以进入用户界面https://www.aa.com/chat/swagger/index.html 然后ui可以完美显示,但是,当我执行一个api(uri是cus/settings)时,我发现请求urlhttps://www.aa.com/cus/settings是错误的,正确的url是https://www.aa.com/chat/cus/settings。
如何修复我的招摇配置以解决问题? 我尝试了很多方法,比如http://eatcodelive.com/2017/05/19/change-default-swagger-route-in-an-asp-net-core-web-api/ 和How to change base url of Swagger in ASP.NET core 但是这些都不能解决我的问题。
【问题讨论】:
-
在dotnet framework版本中,可以通过设置RootUrl来配置,但是在dotnet core版本中,只能设置RoutePrefix,我试了一下还是不行。
标签: asp.net .net asp.net-core .net-core swagger