Encryption 保护Microsoft Azure和web.config中的连接字符串

Encryption 保护Microsoft Azure和web.config中的连接字符串,encryption,web-config,azure,connection-string,Encryption,Web Config,Azure,Connection String,我在web.config中加密连接字符串,如下所述: 已发布到Azure,一切都按预期运行。 但是现在我的本地开发面临着一个问题,我的本地数据库不需要加密连接字符串。 我的本地开发配置为调试配置,我尝试替换(转换)web.config的加密连接字符串部分,如: <connectionStrings configProtectionProvider="CustomProvider"> <EncryptedData Type="http://www.w3.org/2001/04/

我在web.config中加密连接字符串,如下所述:

已发布到Azure,一切都按预期运行。

但是现在我的本地开发面临着一个问题,我的本地数据库不需要加密连接字符串。
我的本地开发配置为调试配置,我尝试替换(转换)web.config的加密连接字符串部分,如:

<connectionStrings configProtectionProvider="CustomProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
 ...
</EncryptedData>


只是想知道。。。为什么要保护连接字符串?您可以将连接字符串放在.cscfg文件中,并且该文件不会通过IIS以任何方式公开。

是的,您可以将它们放在.csfg文件中,并创建一个库来提取连接字符串(只需提供DLL):


这不是关于在IIS中公开,而是关于即使在cscfg文件中也可以读取connectionstring和普通密码。出于安全原因,我喜欢隐藏sql azure的密码,因为对于本地开发,不需要知道azure密码。我无法在网上找到关于在cscfg中存储加密连接字符串的帖子,尽管这也是我想要做的。如果您发现了什么,请回答为什么在调试模式下使用相同的用户/pwd?使用其他登录凭据在另一个数据库上调试。
<connectionStrings>
<add name="ApplicationServices" connectionString="data source=localhost...
</connectionStrings>
public class MyContext : DbContext
{
    private MyContext(string connString)
        : base(connString)
    {
    }

    public static MyContext GetMyContext()
    {
        string dbConnString = CloudConfigurationManager.GetSetting("MyDbConnectionString");

        return new MyContext(decrypt(dbConnString));
    }
}