我遇到了一个奇怪的问题,我的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,并且定义仍包含基本网址:
{"swagger":"2.0","info":{"version":"v1","title":"My AppName API"},"basePath":"/swagger",...
答案 0 :(得分:0)
感谢this answer,我能够提出一个解决方案。我仍然不了解在基本URL中添加了哪些更改,或者为什么在App Service中未进行更改。
app.UseSwagger(c =>
{
c.PreSerializeFilters.Add((swaggerDoc, httpReq) =>
{
swaggerDoc.BasePath = null;
});
});