因此,我试图使.NET Core API应用程序在不同的环境设置下运行。我一直在阅读文档,并且据我所知,我一直按照说明进行操作。但是,当我在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
命令使用各种配置文件?
因此,经过一番戳后。看来您必须在服务器上设置环境变量,我误认为这是某种“运行时环境”变量,不是,它是完整的OS级环境变量:
LINUX
export ASPNETCORE_ENVIRONMENT =暂存
电源外壳
$ Env:ASPNETCORE_ENVIRONMENT =“分期”
视窗
设置ASPNETCORE_ENVIRONMENT =暂存
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句