asp.net core 2.2 не использует ConnectionString, заданный в конфигурации WebApp Azure - PullRequest
0 голосов
/ 14 июня 2019

Я установил приложения Azp.net Core 2.2 в Azure. На портале Azure я добавил строку подключения для приложения, но ядро ​​asp.net его не обнаруживает, оно использует его в appsettings.json.

Что я сделал, чтобы проверить это? Я просто скопировал строку подключения, введенную в Azure, в файл appsettings.json (следовательно, заменил версию для разработки), заново развернул ее, и она работает нормально.

Есть предложения?

public class Program
{
    public static void Main(string[] args)
    {
        WebHost
            .CreateDefaultBuilder(args)
            .UseStartup<Startup>()
            .Build()
            .Run();
    }
}

Извлечь из автозагрузки.cs

        public void ConfigureServices(IServiceCollection services)
        {
...
            services.AddDbContext<BattMobilityDbContext>(option => option.UseSqlServer(_configuration.GetConnectionString("BattMobilityDbConnection")));
...
}

Извлечение из настроек приложения.

  "ConnectionStrings": {
    "BattMobilityDbConnection": "Data Source=localhost\\SQLEXPRESS_JSL; initial catalog=BattMobility; integrated security=true"
  },

Снимок экрана из Azure

enter image description here

1 Ответ

0 голосов
/ 14 июня 2019

Я думаю, что испытал то же самое, когда обновлял свои функции Azure до ".NET Core 2.1".Внезапно приложение больше не считывало AppSettings или ConnectionString из службы приложений Azure.

Я исправил это, добавив префикс «APPSETTINGS_» для AppSettings и «SQLAZURECONNSTR_» для строк подключения (строки подключения типа AzureSQL).

Вот код для инициализации корневого каталога конфигурации:

var basePath = Environment.GetEnvironmentVariable("AzureWebJobsScriptRoot")
    ?? $"{Environment.GetEnvironmentVariable("HOME")}/site/wwwroot";

var config = new ConfigurationBuilder()
        .SetBasePath(basePath)
        .AddJsonFile("local.settings.json", optional: true, reloadOnChange: false)
        .AddEnvironmentVariables()
        .Build();

Вот код для получения AppSetting и ConnectionString:

public static string GetAppSetting(string name)
{
    return ConfigurationRoot?[name]
        ?? ConfigurationRoot?["Values:" + name]
        ?? ConfigurationRoot?["APPSETTING_" + name]
        ?? ConfigurationManager.AppSettings[name];
}

public static string GetConnectionString(string name)
{
    return ConfigurationRoot?.GetConnectionString(name)
        ?? ConfigurationRoot?.GetConnectionString("SQLAZURECONNSTR_" + name)
        ?? ConfigurationManager.ConnectionStrings[name].ConnectionString;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...