如何停止Swashbuckle添加不需要的(和未指定的)基本URL?

时间:2018-07-25 10:14:53

标签: c# asp.net-core swagger swashbuckle

我遇到了一个奇怪的问题,我的API项目似乎开始在一夜之间插入基本URL(“ / swagger”),而没有更改代码。基本URL仅在我在本地上处理项目时显示,当将其部署到Azure应用服务时,一切正常。查看图片以查看问题:

enter image description here

在启动时,我的招摇设置如下:

public void ConfigureServices(IServiceCollection services)
{
    ...

    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new Info { Title = "My AppName API", Version = "v1" });
        c.OperationFilter<SwaggerTokenParameter>();
    });
}


public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    ...

    app.UseSwagger();

    app.UseSwaggerUI(c =>
    {
        c.SwaggerEndpoint("../swagger/v1/swagger.json", "V1 Docs");
    });

    ...            
}

我尝试将项目重新克隆到我的机器上,但问题仍然存在,我还尝试过手动设置RoutePrefix

app.UseSwaggerUI(c =>
{
    c.SwaggerEndpoint("../swagger/v1/swagger.json", "V1 Docs");
    c.RoutePrefix = string.Empty;
}

这无济于事-它只会破坏UI,并且定义仍包含基本网址:

{"swagger":"2.0","info":{"version":"v1","title":"My AppName API"},"basePath":"/swagger",...

1 个答案:

答案 0 :(得分:0)

感谢this answer,我能够提出一个解决方案。我仍然不了解在基本URL中添加了哪些更改,或者为什么在App Service中未进行更改。

app.UseSwagger(c =>
{
    c.PreSerializeFilters.Add((swaggerDoc, httpReq) =>
    {
        swaggerDoc.BasePath = null;
    });
});