我想加密web.config的连接字符串。 Here我找到了一个很好的例子来说明如何做到这一点。我实现了这个,并在我的开发机器上运行查找。 但是,如果我将其上传到提供程序,则无法使用以下错误:
[SecurityException:请求失败。] System.Configuration.DpapiProtectedConfigurationProvider.Encrypt(XmlNode节点)
在this博客中,我读过,这是因为网络可能以中等信任方式运行,因此无法使用WebConfigurationManager.OpenWebConfiguration
。而不是这个,应该使用WebConfigurationManager.GetSection
。但是,如果我按照建议获得该部分,则对ProtectSection
的调用将失败,并显示以下错误消息:
System.InvalidOperationException:此操作在运行时不适用
任何人都可以引导我找到解决方案,我如何编码(和解码)web.config文件中的连接字符串(在运行时)?
更新
这个问题不是真正的答案,但是主持人完全信任网络,现在一切正常。我打开问题,也许有人发布原始问题的解决方案,并帮助这些人遇到同样的问题,但没有得到完全的信任。
答案 0 :(得分:1)
来自http://msdn.microsoft.com/en-us/library/89211k9b%28v=vs.80%29.aspx
static void ToggleWebEncrypt()
{
// Open the Web.config file.
Configuration config = WebConfigurationManager.
OpenWebConfiguration("~");
// Get the connectionStrings section.
ConnectionStringsSection section =
config.GetSection("connectionStrings")
as ConnectionStringsSection;
// Toggle encryption.
if (section.SectionInformation.IsProtected)
{
section.SectionInformation.UnprotectSection();
}
else
{
section.SectionInformation.ProtectSection(
"DataProtectionConfigurationProvider");
}
// Save changes to the Web.config file.
config.Save();
}
<强>更新强>
此外,请确保您的服务帐户具有对Web.config的写入权限。此外,请注意,在Web.config上向服务帐户授予写入权限会增加应用程序的安全性。只有了解并接受风险,才能这样做。