Когда я меняю переменную ASPNETCORE_ENVIRONMENT со значения «Разработка», страница Swagger не работает.

У меня есть веб-API на основе dot net 6. Этот веб-API работает в службе приложений Azure. Служба приложений Azure работает в Linux.

Я использую Open API (Swagger) для тестирования и документации. Я создал 2 файла настроек приложения. (Разработка и этап.)

Я добавляю переменную ASPNETCORE_ENVIRONMENT в конфигурацию службы приложений Azure, как показано ниже. Функции работают с двумя переменными ASPNETCORE_ENVIRONMENT (разработка и этап).

когда я устанавливаю значение «Stage» на ASPNETCORE_ENVIRONMENT, страница Swagger не работает. Это дает ошибку 404 Not Found. Но это работает для развития.

Вот мой код запуска для конфигурации swagger;

      public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options => options.AddPolicy("AllowAnyOrigin", builder => { builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader(); }));
    services.AddControllers();

    services.AddSwaggerGen(c =>
    {
        c.SwaggerDoc("v1", new OpenApiInfo { Title = "AllStore.Api", Version = "v1" });

        var securitySchema = new OpenApiSecurityScheme
        {
            Description = "JWT Authorization header using the Bearer scheme. Example: \"Authorization: Bearer {token}\"",
            Name = "Authorization",
            In = ParameterLocation.Header,
            Type = SecuritySchemeType.ApiKey,
            Scheme = "bearer",
            Reference = new OpenApiReference
            {
                Type = ReferenceType.SecurityScheme,
                Id = "Bearer"
            }
        };

        c.AddSecurityDefinition("Bearer", securitySchema);

        var securityRequirement = new OpenApiSecurityRequirement
        {
            { securitySchema, new[] { "Bearer" } }
        };

        c.AddSecurityRequirement(securityRequirement);

    });
}

Я правда не понимаю, в чем проблема? Может кто-нибудь помочь мне?

1 ответ

Изменен метод настройки в файле startup.cs, как показано ниже.

      public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseSwagger();
    app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "AllStore.Api v1"));

    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthorization();

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

вместо

      public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseSwagger();
        app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "AllStore.Api v1"));
    }

    app.UseHttpsRedirection();

    app.UseRouting();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });       
}
Другие вопросы по тегам