asp.net core swagger RoutePrefix

asp.net core swagger RoutePrefix,asp.net,.net,asp.net-core,.net-core,swagger,Asp.net,.net,Asp.net Core,.net Core,Swagger,我有一个api站点,它使用swagger来公开api。 dotnet核心版本是2.1,而swagger是Swashback.AspNetCore 3.0.0。 我的api站点位于反向代理(nginx)后面,nginx url是,映射到backen服务器 我的招摇过市配置是: 配置服务: services.AddSwaggerGen(c => { c.SwaggerDoc("v1", new Info { Title =

我有一个api站点,它使用swagger来公开api。 dotnet核心版本是2.1,而swagger是Swashback.AspNetCore 3.0.0。 我的api站点位于反向代理(nginx)后面,nginx url是,映射到backen服务器 我的招摇过市配置是: 配置服务:

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");
            });
然后,我可以进入ui 然后ui可以显示所有的完美,但是,当我执行api(uri是cus/settings)时,我发现请求url是错误的,正确的url是错误的

如何修复我的招摇过市配置来解决问题? 我试过很多方法,比如
但是这些都不能解决我的问题。

你可以尝试使用app.UseRewriter重写你的URL

app.UseRewriter(new RewriteOptions()
    .AddRewrite(@"/cus/settings", "Chat$1", skipRemainingRules: true));

请注意,这是未经测试的,只是从我的脑海中写出来的。

谢谢大家,我通过以下配置解决了它:

            app.UseSwagger(c =>
            {
                c.PreSerializeFilters.Add((doc, requset) =>
                {
                    var root = "https://www.aa.com/chat/";
                    doc.Host = root;
                });
            });

在dotnetframework版本中,这可以通过设置RootUrl进行配置,但在dotnetcore版本中,只有RoutePrefix可以设置,我尝试它不能正常工作。