我在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部分,或者更好的做法是克服此问题?
答案 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));
}
}