#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, и поэтому ничего не конфликтовало.