Ошибка при переносе EF - Azure - MySql в приложении

0

Я пытаюсь запустить все ожидающие миграции на моем веб-приложении asp.net core 2.1 на Azure, используя MySql on App, свободный уровень (всегда включен не включен), но я получаю сообщение об ошибке, как в файле журнала:

"Microsoft.EntityFrameworkCore.Database.Connection: An error occurred using the connection to database '' on server '127.0.0.1:54184'"

Я использую mysql-пакет Pomelo.EntityFrameworkCore.MySql, версия 2.1.1. Я запускаю этот код в методе Configure класса Startup:

using (var serviceScope = app.ApplicationServices.GetRequiredService<IServiceScopeFactory>().CreateScope())
{
    using (var context = serviceScope.ServiceProvider.GetService<SandroDbContext>())
    {
        context.Database.Migrate();
    }
}

Кажется, что правильный сервер и порт получают из переменной среды для MySql в приложении, но не с именем базы данных.

UPDATE: он не работает, даже если я удаляю строки кода для применения миграции. Просто путем ввода DbContext у меня такая же ошибка. Возможно, это связано с тем, что при запуске веб-приложения приложение Sql в App еще не доступно.

Теги:
azure
migration

1 ответ

0

Кажется, проблема связана с строкой соединения, которую Azure предоставляет через переменную среды. Он пропускает параметр "Порт", поскольку порт находится рядом с именем сервера, но строка подключения недействительна таким образом. Я сделал несколько строк кода, чтобы исправить это.

        public string FixAzureConnectionString(string connStr)
        {
            string goodConnStr = connStr;
            string portNumber = Regex.Match(goodConnStr, @"(?<=Data Source.+:)\d+")?.Value;
            goodConnStr += ";Port=" + portNumber;
            goodConnStr = goodConnStr.Replace(":" + portNumber, "");
            return goodConnStr;
        }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню