Поэтому я пытаюсь запустить приложение API .NET Core с другими настройками среды.Я читал документацию и, насколько я могу судить, я следовал инструкциям.Тем не менее, когда я запускаю сервис за пределами VS, он взрывается из-за невозможности найти строку подключения.Я явно упускаю что-то простое.
Я настроил два профиля в launchSettings.json
"Разработка" и "Подготовка"
"profiles": {
"IIS Express": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Development": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"Staging": {
"commandName": "Project",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Staging"
}
}
У меня есть следующие файлы конфигурации.
appsettings.json
appsettings.Development.json
appsettings.Staging.json
У меня также есть следующий код в моем Startup.cs
:
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: false, reloadOnChange: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
Когда я отлаживаю это, я вижу, что .AddJsonFile($"appsettings.{env.EnvironmentName}.json"
загружает ожидаемый файл.Однако, когда я публикую это в каталоге и пытаюсь запустить его, значение connectionString
us null
.
appsettings.json не содержит значения для строки подключения.Он находится в двух зависимых от среды файлах, определенных как:
"DefaultConnection": {
"ConnectionString":
"Server=name;Port=3307;Database=name;User Id=name;Password=name;"
},
Так как все это работает внутри VS, я уверен, что это все правильно.Однако когда я пытаюсь запустить его, BOOM!
dotnet MyDll.dll --launch-profile Staging
Я только что заметил, что --launch-profile
работает только с dotnet run
и что, когда я пытаюсь запустить приложение, он ищет Production.json
файл.Как использовать различные профили только с помощью команды dotnet
, а не команды dotnet run
?