asp.net核心工具RoutePrefix

时间:2018-10-15 09:33:13

标签: asp.net .net asp.net-core .net-core swagger

我有一个api网站,使用swagger公开了api。 dotnet核心版本是2.1,swagger是Swashbuckle.AspNetCore 3.0.0。 我的api网站位于反向代理(nginx)后面,nginx网址为https://www.aa.com/chat,映射到后备服务器http://127.0.0.1:5003/ 我的挥霍配置是: ConfigureServices:

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)时,我发现请求网址https://www.aa.com/cus/settings是错误的,正确的网址是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 但是这些都无法解决我的问题。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用app.UseRewriter重写网址。

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

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

答案 1 :(得分:1)

感谢所有,我通过以下配置对其进行了解决:

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