Swagger/OpenAPI静态文件未显示

mu0hgdu0  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(205)

我尝试让dotnet 6 Weather API示例生成静态swagger.json或swagger. yaml。
我很肯定我已经按照微软文档的步骤,但没有静态文件正在生成,我希望他们出现在建设。
Microsoft文档URL:
https://learn.microsoft.com/en-us/aspnet/core/tutorials/getting-started-with-swashbuckle?view=aspnetcore-6.0&tabs=visual-studio
我的program.cs中的代码:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages();
builder.Services.AddControllersWithViews();

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error");
    app.UseHsts();

    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseAuthorization();

app.MapDefaultControllerRoute();
app.MapRazorPages();

app.Run();

我正在通过visual studio 2022以及dotnet run运行/构建应用程序

li9yvcax

li9yvcax1#

修改你的.csproj文件,如下所示。

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

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.3.1" />
    <PackageReference Include="Swashbuckle.AspNetCore.Swagger" Version="6.3.1" />
    <PackageReference Include="Swashbuckle.AspNetCore.SwaggerGen" Version="6.3.1" />
    <PackageReference Include="Swashbuckle.AspNetCore.SwaggerUI" Version="6.3.1" />
  </ItemGroup>
  <Target Name="PostBuild" AfterTargets="PostBuildEvent">
    <Exec Command="dotnet tool restore" />
    <Exec Command="dotnet new tool-manifest --force" />
    <Exec Command="dotnet tool install --local Swashbuckle.AspNetCore.Cli"/>
    <Exec Command="dotnet swagger tofile --output swagger.json $(OutputPath)\$(AssemblyName).dll v1 " />
</Target>
</Project>
e4yzc0pl

e4yzc0pl2#

对于没有任何控制器或API的ASP.NET核心Web应用程序项目,swashbuckle将不会生成swagger文档。
所以它的一点点取决于你想实现什么。
如果您希望在构建时生成不带API的swagger文档,那么https://stackoverflow.com/a/72654660/9247039解决方案是最适合您的解决方案。
但如果您希望在运行时生成swagger文档,则必须添加一些控制器或API来生成它,并且不需要更改任何项目设置。
因此,通过对示例进行简单的修改,我就能够生成swagger.json。当然,我必须将swagger的内容放在这个块之外

if (!app.Environment.IsDevelopment())

在应用程序MapRazorPages()之后;添加这些行并运行应用程序。

app.MapGet("/hello", () =>
{
    return "Hello World";
});

然后进入你的招摇页面

你可以在swaggerui中看到你的api。

相关问题