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

时间:2010-12-01 10:10:59

标签: encryption web-config azure connection-string

我在web.config中加密连接字符串,如下所述:
http://blogs.msdn.com/b/sqlazure/archive/2010/09/07/10058942.aspx
发布到Azure,一切都按预期工作。

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

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

使用常规非加密部分到web.config.debug

<connectionStrings>
<add name="ApplicationServices" connectionString="data source=localhost...
</connectionStrings>

使用xdt添加部分没有问题:Transform =“Insert,但我没有设法从web.config中删除部分。
在调试模式下执行Web项目时,会导致分析程序错误消息:无法识别的元素“EncryptedData”。

是否有任何方法可以删除web.config.debug的EncryptedData部分,或者更好的做法是克服此问题?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

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

public class MyContext : DbContext
{
    private MyContext(string connString)
        : base(connString)
    {
    }

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

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