加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-core – 如何使用环境变量在ASP.NET Core 2.0中存储生产

发布时间:2020-12-16 06:34:38 所属栏目:asp.Net 来源:网络整理
导读:根据我读过的 here,建议使用secrete管理器在开发期间存储机密,然后在部署到IIS时使用环境变量.我不太清楚最好的方法是什么 – 我需要能够在不同的IIS应用程序中将相同的变量设置为不同的值,因此系统范围的环境变量设置不起作用. 我知道我可以在web.config中
根据我读过的 here,建议使用secrete管理器在开发期间存储机密,然后在部署到IIS时使用环境变量.我不太清楚最好的方法是什么 – 我需要能够在不同的IIS应用程序中将相同的变量设置为不同的值,因此系统范围的环境变量设置不起作用.

我知道我可以在web.config中为应用程序设置变量,但是VS会覆盖服务器上的web.config,即使在进行Web部署时项目中没有web.conifg也是如此.我知道使用Web部署来部署到生产可能不是一个好习惯,但我们希望将其用于暂存环境等.

有没有办法阻止Web部署覆盖web.config,如果它已经存在于目标站点上?

解决方法

ASP.NET Core不使用Web.config.它是作为发布的一部分添加的,仅用于与IIS中的托管兼容.您无意以任何有意义的方式修改或使用它.

ASP.NET Core中配置提供程序的内置选项包括:JSON,命令行参数,用户秘密,环境变量和Azure Key Valult.但是,User Secrets仅用于开发,并且在IIS中托管时难以使用命令行参数. (从技术上讲,您实际上可以修改Web.config以添加命令行参数,但如上所述,这将在下一次发布时被覆盖,因此它不是最稳定的方法.)

在剩余的JSON,环境变量和Azure Key Vault选项中,只有Azure Key Vault支持加密.无论您是否实际在Azure中托管,都可以使用Azure Key Vault,但它不是免费的.不过,它也不是很贵,所以值得深入研究.

在安全方面,JSON可能是最糟糕的选择,主要是因为它要求您实际将秘密存储在源控件中,而源控件是(或应该是)非启动器.环境变量虽然未加密,但可以得到保护.但是,如果相同的环境变量需要不同的秘密,那么在同一台服务器上运行多个应用程序很困难(尽管技术上并非不可能).您可以在技术上在用户级别设置环境变量,然后您还可以指定应用程序池以作为特定用户运行.虽然这有很多设置.

也就是说,完全可以创建自己的配置提供程序,这意味着您可以在技术上使用您喜欢的任何内容.例如,您可以编写SQL Server配置提供程序,然后将凭据存储在那里.您仍然需要在某处配置连接字符串,但也许您可以为所有站点的配置使用相同的连接字符串.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读