Ошибка шифрования строки подключения в Web.Config - PullRequest
2 голосов
/ 29 апреля 2011

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

[SecurityException: запрос не выполнен.] System.Configuration.DpapiProtectedConfigurationProvider.Encrypt (узел XmlNode)

В этом блоге, который я прочитал, это связано с тем, что сеть, вероятно, работает со средним доверием и, следовательно, WebConfigurationManager.OpenWebConfiguration не может использоваться. Вместо этого следует использовать WebConfigurationManager.GetSection. Однако, если я получаю предложенный раздел, вызов ProtectSection завершится неудачно со следующим сообщением об ошибке:

System.InvalidOperationException: эта операция не применяется во время выполнения

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

Обновление
Не настоящий ответ на вопрос, но хостер полностью доверял сети, и теперь все работало нормально. Я оставляю вопрос открытым, может быть, кто-то опубликует решение исходного вопроса и поможет людям с такой же проблемой, но не получающих полного доверия.

1 Ответ

1 голос
/ 29 апреля 2011

С http://msdn.microsoft.com/en-us/library/89211k9b%28v=vs.80%29.aspx

static void ToggleWebEncrypt()
{
    // Open the Web.config file.
    Configuration config = WebConfigurationManager.
        OpenWebConfiguration("~");

    // Get the connectionStrings section.
    ConnectionStringsSection section =
        config.GetSection("connectionStrings")
        as ConnectionStringsSection;

    // Toggle encryption.
    if (section.SectionInformation.IsProtected)
    {
        section.SectionInformation.UnprotectSection();
    }
    else
    {
        section.SectionInformation.ProtectSection(
            "DataProtectionConfigurationProvider");
    }

    // Save changes to the Web.config file.
    config.Save();
}

ОБНОВЛЕНИЕ

Кроме того, убедитесь, что ваша учетная запись службы имеет разрешения на запись в файл Web.config.Также имейте в виду, что предоставление разрешений на запись вашей учетной записи службы в файле Web.config несколько увеличивает степень защиты вашего приложения.Делайте это, только если вы понимаете и принимаете риски.

...