Que*_*n3r 7 c# .net-core asp.net-core
创建新的 .NET Core 项目时,Rider 会生成一个launchSettings.json,appSettings.json和appSettings.Development.json文件。.NET Core 似乎能够自行处理这些配置,我不需要自己编写任何代码。这些文件都不会被版本控制忽略。
.NET Core 对我来说是新的,我只知道 Node 后端。在 Node 中,我将安装该dotenv包,创建一个.env包含 content 的新文件PORT=3000,将.env文件添加到我的 .gitignore 并通过我的代码访问端口process.env.PORT。这些配置值仅适用于我,因为它们不在版本控制范围内。
比较这些方法有一些我不明白的事情:
\n\n.env文件应该不受版本控制的影响,但这些文件却没有?敏感信息怎么办?或者我应该手动将它们添加到 .gitignore 中?从这里来看,明确建议避免拥有多个配置文件。
\n\n\n\n\n在十二因素应用程序中,环境变量是粒度控制,每个环境变量都与其他环境变量完全正交。它们永远不会被分组为\n \xe2\x80\x9cenvironments\xe2\x80\x9d,而是针对每个部署进行独立管理。\n 这是一个随着应用自然扩展到更多部署而平滑扩展的模型\n在其生命周期内。
\n
appSettings.Development.json那么删除该文件并继续使用不是更好吗appSettings.json?
launchSettings.json有关应用程序配置的信息(例如"applicationUrl":\n"https://localhost:5001;http://localhost:5000",)并由版本控制获取。如果我想更改端口或其他\n设置怎么办?既然你知道它是一个 json 文件,我将无法为环境变量添加占位符,例如http://{{baseUrl}}:{{port}}。\n如何处理?launchSettings.json有一个environmentVariables带有初始值的部分"ASPNETCORE_ENVIRONMENT":\n"Development",但是那部分的目的是什么appSettings.json?我认为事情比看起来更容易,但这个概念让我感到困惑。有人介意解释一下吗?
\n虽然我不知道 .env 文件,但我对其余文件的回答如下:
当您拥有 appsettings.json 和 appsettings.development.json 并且在 ASPNETCORE_ENVIRONMENT 中指定您正在运行开发时,appsettings.development.json 中的设置应覆盖 appsettings.json 中的设置,而未覆盖的设置将从 appsettings 中读取。 json。然而,我几乎总是使用仅包含 {} 的 appsettings.json,然后使用 appsettings.product.json 和 appsettings.development.json 来明确哪些设置在哪里。
关于安全性,我认为其目的是将秘密添加到 CD 系统中,例如 Octopus 部署或 teamcity,然后在部署解决方案时将占位符秘密交换为真实秘密。
Launchsettings.json 仅涉及在本地运行项目而不发布,无论是通过 Rider 还是 Visual studio,它告诉系统是否启动浏览器以及在哪个 url 上查找应用程序,端口只是默认值,可以在代码中覆盖,然后您必须匹配启动设置中新选择的端口才能按预期进行调试工作。
我希望这是有道理的。