.net core在Docker->Linux及Window平台环境变量的获取的兼容
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了.net core在Docker->Linux及Window平台环境变量的获取的兼容,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1666字,纯文字阅读大概需要3分钟。
内容图文
![.net core在Docker->Linux及Window平台环境变量的获取的兼容](/upload/InfoBanner/zyjiaocheng/936/6c18b35218424e23a742804de3be2607.jpg)
如果说关于在Windows系统下,想要获取指定的环境变量的内容,这个在网上有很多相关的内容。
获取计算机的环境变量
Environment.GetEnvironmentVariable("name",EnvironmentVariableTarget.Machine)
获取用户的环境变量
Environment.GetEnvironmentVariable("name",EnvironmentVariableTarget.User)
但是跨平台之后,在linux中,就不是那么一回事了。
针对 EnvironmentVariableTarget 枚举按下 F12 可以看到如下内容。
这两种方式都是针对windows平台的方法,不适用于 Mac 及 Linux环境。
所以目前只剩下一种方式,就是 EnvironmentVariableTarget 的枚举值 Process。
接下来就是具体如何实现,既能在windows系统读取到想要的环境变量,也能在docker容器下的Linux系统中读取到。
首先,修改代码,加入一行判断代码,判断当前系统环境是windows还是其他。
Environment.GetEnvironmentVariable("MysqlDb",RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? EnvironmentVariableTarget.Machine : EnvironmentVariableTarget.Process)
现在这样,就能保证windows系统平台下,使用 “machine” 的途径,而其他系统平台,则使用 “process”的途径
但是关于 process,从整个进程中关联到的环境变量中查找值,又还是有所限制。
Mac 与 Linux 系统里不支持计算机与用户环境变量获取,只能从启动该dotnet进程的父进程继承的或在dotnet进程本身范围内定义的所有环境变量的名称和值。一旦dotnet进程结束,这些后面的环境变量将不复存在。
而如果想环境变量,保证是在同一个进程中被创建,同时也是被我们所读取的话,我这里找到的方式,是从 Dockerfile 下手。
修改Dockerfile
#设置 MySQL 连接字符串 ENV MysqlDb="Data Source=xxx.xxx.xxx.xxx;Database=test;User ID=root;Password=123456;pooling=true;port=3306;sslMode=None;CharSet=utf8;"
在dockerfile中写好脚本,在容器中创建我们要的环境变量。
这个时候,我们的.net core应用再去从进程中获取环境变量,就能读取到我们想要的值了。
内容总结
以上是互联网集市为您收集整理的.net core在Docker->Linux及Window平台环境变量的获取的兼容全部内容,希望文章能够帮你解决.net core在Docker->Linux及Window平台环境变量的获取的兼容所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。