API создается с помощью WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
Я попытался получить значения следующими методами:
- builder.Configuration["VariableName"];
- Environment.GetEnvironmentVariable("VariableName");
- builder.Configuration.GetSection("Values").Get();
public class Details { public string VariableName { get; set; } }
Я попробовал добавить следующий код, предложенный другими ответы:
- builder.Configuration.AddEnvironmentVariables();
Интересно, что я могу получить значения позже, если попытаюсь получить их в опубликованном вызове API. Например, я вызываю CosmosDbConfig.initialize(builder.Configuration); в начале Program.cs и присваиваю значения классу, например apiKey = Configuration["VariableName"]; Однако если я попытаюсь получить доступ к значению apiKey сразу после назначения, значение будет нулевым, но если я попытаюсь получить доступ к нему в вызове API после его публикации, будет возвращено правильное значение.
Здесь я присваиваю значения на портале Azure. Ключ там, но он не виден на этом снимке экрана.

Файл My Program.cs:
WebApplicationBuilder builder = WebApplication.CreateBuilder(args);
builder.Configuration.AddEnvironmentVariables();
CosmosDbConfig.initialize(builder.Configuration);
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme).AddJwtBearer(options =>
{
options.Authority = "placeholder";
options.Audience = "placeholder";
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true
};
});
builder.Services.AddApplicationInsightsTelemetry(options =>
{
options.ConnectionString = "placeholder";
});
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddScoped();
builder.Services.AddControllersWithViews(options =>
{
options.Filters.AddService();
});
builder.Services.AddSwaggerGen(c =>
{
string title = builder.Configuration["VariableName"];
c.SwaggerDoc("v1", new OpenApiInfo { Title = title, Version = "v1" });
});
builder.Services.AddAuthorization();
builder.Services.AddMvc();
builder.Services.AddHttpClient();
builder.Services
.AddSignalR(hubOptions =>
{
hubOptions.AddFilter();
})
.AddAzureSignalR(hubOptions =>
{
hubOptions.ConnectionString = "placeholder";
});
builder.Services.AddCors(options => options.AddPolicy("CorsPolicy", policyBuilder =>
{
policyBuilder
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials()
.WithOrigins("placeholder");
}));
builder.Services.AddSingleton(x =>
{
string accountName = "placeholder";
string containerName = "placeholder";
string accountKey = "placeholder";
string blobServiceEndpoint = $"https://{accountName}.blob.core.windows.net";
BlobServiceClient blobServiceClient = new BlobServiceClient(new Uri(blobServiceEndpoint), new StorageSharedKeyCredential(accountName, accountKey));
BlobContainerClient blobContainerClient = blobServiceClient.GetBlobContainerClient(containerName);
return blobContainerClient;
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
LoggerFactoryProvider.LoggerFactory = app.Services.GetRequiredService();
app.UseMiddleware();
app.UseMiddleware();
app.UseSwagger();
app.UseCors("CorsPolicy");
app.UseHttpsRedirection();
app.UseRouting();
app.UseFileServer();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub($"/{SignalRHubData.hubName}");
});
app.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
await ProceduresSetup.run();
app.Run();
Подробнее здесь: https://stackoverflow.com/questions/784 ... pplication
Мобильная версия