Swagger.json 显示但 UI 不显示

Swagger.json is displayed but the UI not

我有 ASP.Net 6.0 项目,我已按如下方式配置 Swagger:

services.AddSwaggerGen(c =>
{
    c.SwaggerDoc("v1", new OpenApiInfo {
        Title = "MyApi",
        Version = "v1"
    });
    c.CustomSchemaIds(x => x.FullName);
    c.ResolveConflictingActions(x => x.First());
});

和:

app.UseStaticFiles();

app.UseSwagger();
app.UseSwaggerUI(c =>
{
#if DEBUG
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "MyAPI");
#else
    c.SwaggerEndpoint("/MyApp/swagger/v1/swagger.json", "MyAPI");
#endif
    c.RoutePrefix = string.Empty;
});

swagger.json 正在从正确的端点提供服务。但是 UI 端点 returns 404 Not Found.

显示 UI 的正确方法是什么?

经过测试,我觉得这可能是一个需要优化的选项。您的代码是正确的,但现在我们遇到了奇怪的行为。

于是我分析了,为什么c.RoutePrefix = string.Empty;在VS2022启动时不生效?但是当我直接访问https://localhost:port时,功能正常

这个好像和VS2022里面的设置有关,于是找了下面的设置,找到了Url的设置。

然后我删除了 swagger 值,问题就解决了。