【问题标题】:How can I stop Swashbuckle adding an unwanted (and unspecified) Base URL?如何阻止 Swashbuckle 添加不需要的(和未指定的)基本 URL?
【发布时间】:2018-07-25 18:39:11
【问题描述】:

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

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

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",...

【问题讨论】:

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


【解决方案1】:

感谢this answer 我能够想出一个解决方案。我仍然不明白在基本 URL 中添加了什么更改或为什么它不会在应用服务中发生。

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

【讨论】:

    猜你喜欢
    • 2023-03-16
    • 2015-04-03
    • 2010-11-29
    • 1970-01-01
    • 2011-03-01
    • 2012-08-27
    • 2019-12-28
    • 2018-12-24
    • 2019-12-04
    相关资源
    最近更新 更多