我怎样才能阻止 Swashbuckle 添加不需要的(和未指定的)基地 URL?

How can I stop Swashbuckle adding an unwanted (and unspecified) Base URL?

我有一个奇怪的问题,我的 API 项目似乎在一夜之间就开始插入基础 URL(“/swagger”),但代码没有任何变化。基础 URL 仅在我在本地处理项目时出现,当它部署到 Azure 应用程序服务时一切正常。问题见图片:

在启动时,我的 swagger 设置如下所示:

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 并且定义仍然包含基础 url:

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

多亏了,我才能够想出一个解决方案。我仍然不明白在基础 URL 中添加了什么,或者为什么它没有发生在应用程序服务中。

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