Я работаю над приложением .NET Core 6.0 «Hello World», и оно будет развернуто как веб-служба Azure.
Я пытаюсь прочитать значение из Службы приложений Azure -> Конфигурация -> ApplicationSetting -> mykey, но не могу получить доступ к значению mykey после развертывания в службе приложений. Я могу прочитать значение mykey в локальном режиме во время отладки.
Тип проекта:
Я должен прочитать mykey в Program.cs. Как проще всего прочитать значение mykey, если это просто приложение для приветствия?
Program.cs:
using HelloWorldApi.Helpers;
using Microsoft.AspNetCore.Authentication.Certificate;
using Microsoft.AspNetCore.Server.Kestrel.Https;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddEndpointsApiExplorer();
var provider = builder.Services.BuildServiceProvider();
var configuration = provider.GetRequiredService<IConfiguration>();
builder.WebHost.ConfigureKestrel(o =>
{
o.ConfigureHttpsDefaults(o =>
{
});
}).ConfigureAppConfiguration((hostContext, builder) =>
{
var settings = builder.Build();
// I tried different ways but not getting value of mykey.
// This code is returning null
var connectionString = configuration.GetValue<string>("mykey");
});
var app = builder.Build();
Я не могу получить доступ к значению mykey после развертывания в службе приложений. Я могу прочитать значение mykey локально во время отладки.
В файле appsettings.json добавьте настройки как "AppSettings": { "mykey": "test" }
С вашим кодом читайте это как var MyAppSettings = configuration.GetSection("AppSettings"); var AppsetVal = MyAppSettings.GetValue<string>("mykey");
При наличии решения с вашим Appsettings, пожалуйста, проверьте один раз.
Проверьте приведенные ниже изменения в коде, чтобы прочитать значения из параметров приложения Azure.
В Program.cs,
Получение значений с помощью вашего кода.
var AppsetVal = configuration.GetValue<string>("mykey")
ИЛИ
Из моего примера кода
var AppsetVal = builder.Configuration.GetValue<string>("mykey");
Мой appsettings.json файл:
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*",
"mykey": "test"
}
Параметры в Azure:
Здесь я отображаю значение в контроллере API.
В WeatherForecastController.cs:
using Microsoft.AspNetCore.Mvc;
namespace WebApplication7.Controllers
{
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private readonly ILogger<WeatherForecastController> _logger;
private readonly IConfiguration Configuration;
public WeatherForecastController(ILogger<WeatherForecastController> logger, IConfiguration configuration)
{
_logger = logger;
Configuration = configuration;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
//var MyAppSettings = Configuration.GetSection("AppSettings");
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateTime.Now.AddDays(index),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)],
myval = Configuration.GetSection("mykey").Value
})
.ToArray();
}
}
}
В WeatherForecast.cs добавьте
public string? myval { get; set; }
Выходные данные развернутой службы приложений:
Я не получаю конфигурацию в builder.Configuration
Как вы проверяете значение развернутого приложения в файле Program.cs? Вы занимаетесь удаленной отладкой?
Нет, удаленная отладка не выполняется, где вы используете MyAppSettings в методе контроллера? что такое версия dot net core вашего проекта
Вы получите значение из параметров приложения Azure только для развернутого приложения. Проверить значение можно только путем отображения или удаленной отладки.
Я использую .NET Core 6.
Игнорировать var MyAppSettings = Configuration.GetSection("AppSettings");. Я установил значение в myval.
Пробовал несколькими способами. Дал вам пробный код, а также. Обновил ответ. Пожалуйста, проверьте сейчас.
Можете ли вы добавить appsetting.json, пожалуйста