所以我设法加密我的本地主机上的连接线,一切都很好......它可以毫无问题地阅读。
现在,在我的webhote上发布我的项目之后,情况就完全不同了。
我收到以下错误:
密钥无法在指定状态下使用。 (HRESULT异常:0x8009000B)
我想知道我是否应该在本地解密它,然后在它发布到我的网站后加密它?我见过另一个人们建议的线程,应该添加一个机器密钥。但我会把它放在哪里,我会在哪里找到它?
可以看到整个堆栈跟踪here
我使用以下cmd进行加密:
aspnet_regiis -pef "connectionStrings" "PATH" -prov "DataProtectionConfigurationProvider"
答案 0 :(得分:0)
所以我认为当machinekey与首先用于加密字符串的密钥(我的localhost)不对应时会产生以下错误。
因此我必须采用以下方法:
private void ProtectSection(string sectionName, string provider)
{
Configuration config = WebConfigurationManager.OpenWebConfiguration("~/");
ConfigurationSection section = config.GetSection(sectionName);
if (section != null && !section.SectionInformation.IsProtected)
{
section.SectionInformation.ProtectSection(provider);
config.Save();
}
}
并在我的global.asax文件中调用它。
通过这样做,我首先上传了我的web.config 不受保护的,然后要求我的网站在第一次运行网站时加密我的连接字符串。因此显然它使用了它自己的机器密钥,因此没有任何冲突。