Неверный ключ шифрования после публикации веб-сайта

#asp.net #encryption

#asp.net #шифрование

Вопрос:

Итак, мне удалось зашифровать свои строки подключения на моем локальном хосте, и все было в порядке.. он может читать без каких-либо проблем.

Теперь, после того, как я опубликовал свой проект на своем веб-сайте, история совсем другая.

Я получаю следующую ошибку:

Ключ недопустим для использования в указанном состоянии. (Исключение из HRESULT: 0x8009000B)

Мне интересно, должен ли я расшифровать его локально, а затем зашифровать его после публикации в моем веб-отеле? я видел другую тему, в которой люди предполагают, что следует добавить machinekey. но где бы я его разместил и где бы я его нашел?

весь stacktrace можно увидеть здесь

Я использовал следующий cmd для шифрования:

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

Комментарии:

1. какой сервер вы используете? может быть, вы пытаетесь использовать какой-либо библиотечный вызов только для настольного программирования?

2. это просто стандартный сервер iis, который я арендовал

Ответ №1:

Итак, я понял, что следующая ошибка выдается, когда machinekey не соответствует ключу, который использовался для шифрования строки в первую очередь (мой локальный хост).

Поэтому мне пришлось использовать следующий метод:

     private void ProtectSection(string sectionName, string provider)
{
    Configuration config = WebConfigurationManager.OpenWebConfiguration("~/");
    ConfigurationSection section = config.GetSection(sectionName);

    if (section != null amp;amp; !section.SectionInformation.IsProtected)
    {
        section.SectionInformation.ProtectSection(provider);
        config.Save();
    }
}
  

И вызовите его в моем файле global.asax..

Поступив таким образом, я сначала загрузил свой web.config незащищенным, а затем попросил мой веб-отель зашифровать мою строку подключения при первом запуске веб-сайта. Очевидно, поэтому он использовал свой собственный machinekey, и поэтому ничего не конфликтовало.