![](/img/trans.png)
[英]launchSettings.json launchUrl doesn't work "api/values"
[英]how do launchSettings.json and appSettings.json work?
在创建新的 .NET 核心项目时,Rider 为我生成了一个launchSettings.json
、 appSettings.json
和appSettings.Development.json
文件 .NET Core 似乎能够自行处理这些配置,我无需自己编写任何代码。 这些文件都不会被版本控制忽略。
.NET Core 对我来说是新的,我只知道 Node 后端。 在节点中,我将安装dotenv
package,创建一个内容为PORT=3000
的新.env
文件,将.env
文件添加到 my.gitignore 并通过我的代码中的process.env.PORT
访问端口。 这些配置值只对我有用,因为它们不在版本控制范围内。
比较方法有一些我不明白的事情:
.env
文件应该在版本控制之外,但这些文件不是吗? 敏感信息呢? 还是我应该手动将它们添加到.gitignore?从这里开始,明确建议避免使用多个配置文件。
在十二因素应用程序中,环境变量是精细控件,每个控件都与其他环境变量完全正交。 它们从不组合为“环境”,而是为每个部署独立管理。 这是一个 model,随着应用程序在其生命周期内自然扩展到更多部署,它可以平滑扩展。
那么删除appSettings.Development.json
文件并坚持使用appSettings.json
不是更好吗?
launchSettings.json
包含有关应用程序配置的信息(例如"applicationUrl": "https://localhost:5001;http://localhost:5000",
)并被版本控制获取。 如果我想更改端口或其他设置怎么办? 既然你知道这是一个 json 文件,我将无法为环境变量添加占位符,例如http://{{baseUrl}}:{{port}}
。 如何处理?launchSettings.json
配置文件有一个environmentVariables
部分,初始值为"ASPNETCORE_ENVIRONMENT": "Development"
,但appSettings.json
的目的是什么?我认为事情比看起来容易,但这个概念让我感到困惑。 有人介意解释一下吗?
虽然我不知道 of.env 文件,但我对 rest 的回答如下:
When you have appsettings.json and appsettings.development.json and you specify in your ASPNETCORE_ENVIRONMENT that you are running development the settings in appsettings.development.json should overwrite the ones in appsettings.json while the ones not overwritten will be read from appsettings. json。 I however almost always use an appsettings.json containing only {} and then use appsettings.production.json and appsettings.development.json to be explicit about what settings go where.
关于安全性,我认为其目的是将机密添加到 CD 系统中,例如 Octopus deploy 或 teamcity,然后在部署解决方案时将占位符机密交换为真实机密。
Launchsettings.json 只涉及在本地运行项目而不发布,无论是通过 Rider 还是 Visual Studio,它都会告诉系统是否启动浏览器以及在哪个 url 上找到应用程序,端口只是默认值,可以在代码中覆盖,然后您必须匹配启动设置中新选择的端口才能按预期进行调试。
我希望这是有道理的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.