c# - 如何停止 Swashbuckle 添加不需要的(和未指定的)基本 URL?
问题描述
我有一个奇怪的问题,我的 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",...
解决方案
感谢这个答案,我能够想出一个解决方案。我仍然不明白在基本 URL 中添加了什么更改,或者为什么它不会在应用服务中发生。
app.UseSwagger(c =>
{
c.PreSerializeFilters.Add((swaggerDoc, httpReq) =>
{
swaggerDoc.BasePath = null;
});
});
推荐阅读
- x11 - 使用相同的本机窗口重新创建 eglCreateWindowSurface
- c# - 通过参数控制 Hangfire 并发
- java - Spring Boot + Flyway + Gradle + Yaml 应用程序在启动时不生成数据库
- php - 试图获取非对象的属性“serino”
- hyperledger-fabric - “启动链码”和“安装链码”有什么区别?-- 超级账本结构
- java - 如何更改画布上绘制位图的颜色?
- reactjs - 在 reduxform 中获取未定义的字段名称
- java - 尝试使用主机名获取网络设备的 IP 地址
- html - 为什么我的 css 动画代码在 Chrome 中不起作用?
- javascript - 尝试在 node.js 中安装 jwt 插件时出现无效令牌错误