网站发布后无效的加密密钥

时间:2016-10-18 10:17:03

标签: asp.net encryption

所以我设法加密我的本地主机上的连接线,一切都很好......它可以毫无问题地阅读。

现在,在我的webhote上发布我的项目之后,情况就完全不同了。

我收到以下错误:

  

密钥无法在指定状态下使用。 (HRESULT异常:0x8009000B)

我想知道我是否应该在本地解密它,然后在它发布到我的网站后加密它?我见过另一个人们建议的线程,应该添加一个机器密钥。但我会把它放在哪里,我会在哪里找到它?

可以看到整个堆栈跟踪here

我使用以下cmd进行加密:

aspnet_regiis -pef "connectionStrings" "PATH" -prov "DataProtectionConfigurationProvider"

1 个答案:

答案 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 不受保护的,然后要求我的网站在第一次运行网站时加密我的连接字符串。因此显然它使用了它自己的机器密钥,因此没有任何冲突。