Проблемы при запуске версии конфигурации ядра основного приложения asp.net из cli.
Приложение очень простое, я создал новую Asp.Net с шаблоном Api, поэтому яполучить приложение прогноз погоды.
Я добавил проект SqlServer, используя ядро Entity Framework, и настраиваю его с помощью строки подключения, взятой из файла appsettings.Production.json
"ConnectionString": {
"SqlServer": "Server = .; Database = test_Prod; Trusted_Connection = True; "
},
Мой конструктор класса запуска
public Startup(IWebHostEnvironment environment)
{
_configurationRoot = new ConfigurationBuilder()
.SetBasePath(environment.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddJsonFile($"appsettings.{ environment.EnvironmentName }.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables()
.Build();
_environment = environment;
}
и метод конфигурации
public void Configure(IApplicationBuilder app, ILogger<Startup> logger)
{
if (_environment.IsProduction())
logger.LogInformation($" { Environment.NewLine } Environment { _environment.EnvironmentName } launched { Environment.NewLine }");
logger.LogInformation($" ConnectionString : { _configurationRoot.GetSection("ConnectionString").GetValue<string>("SqlServer") }"); {
AppContext dbContext = app.ApplicationServices.GetRequiredService<AppContext>();
}
Я получаю следующее исключение
crit: Microsoft.AspNetCore.Hosting.Diagnostics[6]
Application startup exception
System.ArgumentNullException: Value cannot be null. (Parameter 'connectionString')
at Microsoft.EntityFrameworkCore.Utilities.Check.NotEmpty(String value, String parameterName)
at Microsoft.EntityFrameworkCore.SqlServerDbContextOptionsExtensions.UseSqlServer(DbContextOptionsBuilder optionsBuil
При проверке журналов я получаю Environment is Production, а ConnectionString пуста
Ниже приведены команды, которые я выполняю
dotnet publish -c Выпуск -o out
dotnet. \ Out\ myApp.dll
Что я делаю не так?
Приложение работает при запуске из Visual Studio, а также при запуске из dotnet cli с помощью команды запуска
dotnet run -p. \ MyApp \ myApp.csproj