После публикации Веб приложения Visual Studio 2019 ASP.CORE.NET 2.1 не работает авторизация и нет доступа к базе MySQL ASP.CORE.NET 2.1
Есть приложение не мое. Нужно опубликовать и положить на сервер. На рабочей станции после компиляции все работает. Подключается к базе, отображает HTML и т.д. На сервере же выдает 404 http://93.183.214.167:2324/api/Auth Auth - контроллер авторизации. Можно собственно посмотреть по адресу http://93.183.214.167:2324/login.html Что делал. Настраивал IIS, пул приложений и т.д. Запускал dotnet tool install --global dotnet-ef Устанавливал dotnet hosting, sdk, runtime.... После всех манипуляций обнаружился затык в entity framework migrations Если миграцию отключить то публикует, но не работает на сервере. Если включить миграцию выводит
Build succeeded.
Unable to create an object of type 'ScadaContext'. Add an implementation of 'IDesignTimeDbContextFactory<ScadaContext>' to the project, or see https://go.microsoft.com/fwlink/?linkid=851728 for additional patterns supported at design time.
C:\Program Files\dotnet\sdk\3.1.200\Sdks\Microsoft.NET.Sdk.Publish\targets\TransformTargets\Microsoft.NET.Sdk.Publish.TransformFiles.targets(215,5): Ошибка : Entity framework SQL Script generation failed
Вот код контекста
public class ScadaContext : Microsoft.EntityFrameworkCore.DbContext
{
public ScadaContext(DbContextOptions<ScadaContext> options) : base(options)
{
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
var connectionString = configuration.GetConnectionString("ScadaContext");
optionsBuilder.UseMySQL(connectionString);
}
}
Ответы (1 шт):
Как вариант имплементировать IDesignTimeDbContextFactory<TContext>
public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory<CodingBlastDbContext>
{
public CodingBlastDbContext CreateDbContext(string[] args)
{
IConfigurationRoot configuration = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json")
.Build();
var builder = new DbContextOptionsBuilder<CodingBlastDbContext>();
var connectionString = configuration.GetConnectionString("DefaultConnection");
builder.UseSqlServer(connectionString);
return new CodingBlastDbContext(builder.Options);
}
}
пример выше из этого источника.