Invalid encryption key after website published

0

So i managed to encrypt my connectionstrings on my localhost, and everything was fine.. it could read without any problems.

Now after i have published my project on my webhote, the story is quite different.

I get following error:

Key not valid for use in specified state. (Exception from HRESULT: 0x8009000B)

Im wondering if i should decrypt it locally and thereafter encrypt it after it has been published to my webhotel? i have seen another thread where people suggest, that a machinekey should be added. but where would i place it, and where would i find it?

the whole stacktrace can be seen here

I used the following cmd to encrypt:

aspnet_regiis -pef "connectionStrings" "PATH" -prov "DataProtectionConfigurationProvider"
asp.net
encryption
asked on Stack Overflow Oct 18, 2016 by Jeppe Christensen • edited Oct 18, 2016 by Jeppe Christensen

1 Answer

0

So i figured that the following error is yielded when the machinekey doesnt correspond with the key that has been used to encrypt the string in the first place (my localhost).

Therefore i had to make the following method:

    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();
    }
}

And call it in my global.asax file..

By doing so, i first uploaded my web.config unprotected and then asked my web hotel encrypt my connection string when the website was run the first time. Obviously it therefore used it's own machinekey, and nothing therefore conflicted.

answered on Stack Overflow Oct 19, 2016 by Jeppe Christensen

User contributions licensed under CC BY-SA 3.0