Публикация приложения ASPNetCore в Azure со связанной DLL данных.
Azure не собирает базы данных в мастере публикации, но выбирает DbContext и строку подключения из DbContext.
Я объявил строку подключения и DbProvider (SqlServer)в Startup.cs
и DbContext
он также объявлен как переменная среды в приложении-службе.
Мастер публикации выглядит так: this .
После публикации с помощью мастера служба приложения успешно развертывается, но все API-интерфейсы сталкиваются с 500 ошибками сервера.
Вывод сборки содержит несколько сообщений, которые для меня выглядят как успехи.
Generating Entity framework SQL Scripts...
Executing command: dotnet ef migrations script --idempotent --out "./path"
Generating Entity framework SQL Scripts completed successfully
adding database .. connstr
Нужно ли создавать миграции для первоначального создания приложения?
Я использовал метод парадигмы Code First в EFCore, и поэтому я имеюEnsureDeleted
и EnsureCreated
в некоторых инициализаторах для тестирования, но они не вызываются во время выполнения.
У меня также есть EnsureCreated
в пределах Startup.cs
.
if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Production")
{
services.AddDbContext<FFDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("MyDbConnection")));
}
else
{
services.AddDbContext<FFDbContext>(options =>
options.UseSqlServer(local connections string));
}
// Automatically perform database migration
services.BuildServiceProvider().GetService<FFDbContext>().Database.Migrate();
var context = services.BuildServiceProvider()
.GetRequiredService<FFDbContext>();
context.Database.EnsureCreated();
Я чувствую, что если я что-то компенсирую за попытку создания БД, есть какие-нибудь идеи?
Правка - Ошибка SQL в Azure Insights
System.Data.SqlClient.SqlException:
at System.Data.SqlClient.SqlConnection.OnError (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Data.SqlClient.SqlInternalConnection.OnError (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Data.SqlClient.TdsParser.TryRun (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Data.SqlClient.SqlDataReader.TryConsumeMetaData (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Data.SqlClient.SqlDataReader.get_MetaData (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Data.SqlClient.SqlCommand.FinishExecuteReader (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Data.SqlClient.SqlCommand.RunExecuteReader (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Data.SqlClient.SqlCommand.ExecuteReader (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader (System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a)
at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute (Microsoft.EntityFrameworkCore.Relational, Version=2.2.4.0, Culture=neutral, PublicKeyToken=adb9793829ddae60)