确保您的应用程序的 Startup.cs 正在从 ConfigureServices 中调用 AddSwaggerGen 以生成 swagger 文件

问题描述 投票:0回答:2

将 .NET 6 API 项目发布到 Azure API 管理服务时收到上述错误消息。

经过分析,我了解到问题的原因是,在“Program.cs”中配置服务(用于 DI)时,我们尝试获取环境变量,该变量返回 null 并引发异常。不知何故,这会阻止创建 swagger.json 文件。

我想了解的两件事是,

  1. 使用“Environment.GetEnvironmentVariable()”获取环境变量并不是获取“Program.cs”中的值,但在控制器操作方法中也是如此。

  2. 如果我注释掉与 swagger 相关的所有内容,则不会出现此问题。

在发布窗口的“服务依赖项”下,我已配置 APIM 资源详细信息以直接部署/更新 APIM 中的 API。

下面是复制该问题的示例代码屏幕截图。

请分享您的想法。

谢谢!

swagger azure-web-app-service .net-6.0 azure-api-management
2个回答
0
投票

最初,即使我使用给定的代码也遇到了相同的错误。

enter image description here

问题在于获取环境变量。

要从 Azure 应用程序设置中获取键值(环境变量),请使用以下代码行。

var key1 = app.Configuration.GetValue<String>("KEY");

我的Azure应用程序设置: enter image description here

app.UseSwaggerUI
更改为

app.UseSwaggerUI(options =>
{
    options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
    options.RoutePrefix = string.Empty;
});

我的程序.cs

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();
var app = builder.Build();

if (string.IsNullOrEmpty(app.Configuration.GetValue<String>("KEY")))
    throw new Exception("Error");

app.UseSwagger();
app.UseSwaggerUI(options =>
{
    options.SwaggerEndpoint("/swagger/v1/swagger.json", "v1");
    options.RoutePrefix = string.Empty;
});


app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();
app.Run();

我的appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "KEY": "Your Connection String"
}

确保您已安装

Swashbuckle.AspNetCore
最新软件包。

.csproj 文件

    <PackageReference Include="Swashbuckle.AspNetCore" Version="6.2.3" />

输出:

enter image description here


0
投票

以下是发布网络应用程序的步骤。如果您按照以下步骤操作,则不会出现此错误:

  1. 转到 Azure 门户 > Web 应用程序 > 概述。单击下载发布配置文件。这将下载一个 *.PublishSettings 文件:

  2. 现在转到 Visual Studio。右键单击解决方案资源管理器中的项目文件 > 单击上下文菜单中的 Publish。这将打开“发布”窗口。

  3. 现在单击发布选项卡下的新配置文件

  4. 现在按照导入配置文件选项导入下载的配置文件:

  5. 配置文件导入后,点击发布完成发布过程:

© www.soinside.com 2019 - 2024. All rights reserved.