我怎样才能阻止 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;
});
});
我有一个奇怪的问题,我的 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",...
多亏了
app.UseSwagger(c =>
{
c.PreSerializeFilters.Add((swaggerDoc, httpReq) =>
{
swaggerDoc.BasePath = null;
});
});