Asp.net 困惑于在Web.config中存储Azure部署的密码的正确过程是什么

Asp.net 困惑于在Web.config中存储Azure部署的密码的正确过程是什么,asp.net,asp.net-mvc,azure,azure-web-app-service,Asp.net,Asp.net Mvc,Azure,Azure Web App Service,在Azure上安装MVC5应用程序时,我有过一次非常令人沮丧的经历。我一直在阅读以下页面: 但我没有想到的是: 安全警告:不要将secrets.config文件添加到项目中或将其签入源代码管理。默认情况下,VisualStudio将生成操作设置为内容,这意味着文件已部署。有关详细信息,请参见为什么不部署我的项目文件夹中的所有文件?尽管您可以为secrets.config文件使用任何扩展名,但最好将其保留为.config,因为IIS不提供配置文件。还请注意,appsetingssecrets.co

在Azure上安装MVC5应用程序时,我有过一次非常令人沮丧的经历。我一直在阅读以下页面:

但我没有想到的是:

安全警告:不要将secrets.config文件添加到项目中或将其签入源代码管理。默认情况下,VisualStudio将生成操作设置为内容,这意味着文件已部署。有关详细信息,请参见为什么不部署我的项目文件夹中的所有文件?尽管您可以为secrets.config文件使用任何扩展名,但最好将其保留为.config,因为IIS不提供配置文件。还请注意,appsetingssecrets.config文件比web.config文件高出两个目录级别,因此它完全位于解决方案目录之外。通过将文件移出解决方案目录,“git add*”不会将其添加到存储库中

以及:

安全警告:与AppSettingsSecrets.config文件不同,外部连接字符串文件必须与根web.config文件位于同一目录中,因此您必须采取预防措施,确保不将其签入源存储库

问题如下:当我上传Web.config文件时,如果没有包含外部文件,我会被“系统找不到指定的文件”击中,因此为了让它消失,我必须包含与Microsoft帖子目的背道而驰的.config文件

我真的不明白。我已经在Azure的门户中添加了ConnectionString和appSetting的密钥。将我的密码和秘密放在网上的正确和安全的方式是什么?我错过了什么?是因为我在调试模式下运行吗

据此:

无需担心访问Web.config文件

但这完全违背了微软的立场


谢谢。

我发现以下技术是最简单的方法

我没有将这些设置的部署值放入
web.config
,而是将测试值保存在那里。然后,我通过Azure门户将部署值放入Azure网站的应用程序设置部分:


当网站运行时,这些设置将优先于
web.config
中的设置。这有助于我避免外部化文件,允许我保持团队可以共享的合理开发配置,并使部署非常容易。

最好的方法是在门户的连接字符串部分设置机密。在那里设置的任何值都将覆盖您在web.config文件中指定的值

通过这种方式,他们只暴露给那些对网站本身具有管理员访问权限的人。完全访问源代码甚至不足以获取机密值


更多详细信息

关闭,但您甚至可以使用连接字符串部分,而不是应用程序设置部分,以更好地保护您的机密。请参阅您的意思,但我认为这里没有那么多额外的安全性,现在,您在从配置的连接字符串部分读取非连接字符串设置时遇到了更多的困惑。感谢您的回复。在连接字符串的情况下。。。如果我的机器上只有localdb连接,而在Azure上配置DB连接,这是否重要?DB连接会取代localdb吗?我记得读到过这样的文章,连接字符串被覆盖,而应用程序设置被合并或替换(以防发现重复)。同样的机制适用于连接字符串,就像应用程序设置一样。也就是说,它们被合并,并且门户和配置文件中存在的任何设置都会被门户中的设置覆盖。@BrendanGreen您是否使用web.config转换从配置文件中删除测试/本地值,以便任何机密(例如,包含api令牌的应用程序设置)不会推送到Azure?