Когда я меняю переменную 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();
});
}