在 .NET 5 中使用 NSwag 时如何显示完整的 swagger 界面?

问题描述

我正在尝试熟悉 .NET 5 as documented here 的 NSwag 用法。阅读后,我觉得这个文档已经过时了,因为它提到了 UseMvcAddMvc方法,这些方法对于 .NET Core 2.1 来说是典型的,但对于 .NET 5 来说不是。无论如何,这是我的配置方法(我操作了 Visual Studio 2019 自动生成的标准 .NET 5 Web Api 项目):

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddSwaggerDocument();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
{
    app.USEOpenApi();
    app.UseSwaggerUi3();
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseRouting();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

按F5后,显示如下:

enter image description here

这是项目文件

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <packagereference Include="NSwag.AspNetCore" Version="13.11.3" />
    <packagereference Include="Swashbuckle.AspNetCore" Version="5.6.3" />
  </ItemGroup>

</Project>

显然,我“丢失”了 WeatherForecastController 的 GET 方法。那么,在 .NET 5 中使用 NSwag 时如何显示完整的 swagger 界面? The code examples referred to by the docs,也没有帮助我,因为它们基于旧版本的 .NET Core。我使用 NSwag 的原因是“the most popular tool for the job”为我的客户项目生成打字稿代码

解决方法

单击 WeatherForecast 展开节点以查看详细信息,您将在那里找到 GET 方法。