Как получить настройки приложения с портала Azure в веб-приложении AzureC#

Место общения программистов C#
Ответить
Anonymous
 Как получить настройки приложения с портала Azure в веб-приложении Azure

Сообщение Anonymous »

У меня есть API Azure, который я размещаю в Azure и публикую через Visual Studio. Я пытаюсь установить значения в настройках приложения портала Azure, чтобы иметь разные значения для одного и того же ключа в разных слотах развертывания. Настройки применяются к обоим слотам развертывания.
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();
Значения, которые я всегда получаю, равны нулю независимо от того, где в файле Program.cs я помещаю вызовы.
Интересно, что я могу получить значения позже, если попытаюсь получить их в опубликованном вызове 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»