#asp.net #encryption #configuration #aspnet-regiis.exe
#asp.net #шифрование #конфигурация #aspnet-regiis.exe
Вопрос:
Мы используем раздел пользовательской конфигурации (через NameValueConfigSection) для хранения наших настроек. Эти настройки передаются извне из web.config через configSource.
Итак, записи в web.config выглядят примерно так:
<configSections>
<section name="customSettings" type="System.Configuration.NameValueSectionHandler" />
</configSections>
<customSettings configSource="configcustomSettings.config" />
Мы хотим зашифровать этот файл «CustomSettings.config» на нашем рабочем сервере, поэтому запустите эту команду, как рекомендовано Microsoft (здесь:http://msdn.microsoft.com/en-us/library/zhhddkxy.aspx )
aspnet_regiis -pe customSettings -site 4 -app /
И это приведет к следующему результату:
Encrypting configuration section...
Succeeded!
Однако это не удается вообще, оставляя файл точно таким, каким он был
(кстати, эта команда работает при шифровании нестандартного раздела, такого как раздел externalized ConnectionStrings)
Я смог написать небольшое консольное приложение, которое работает нормально, но мы действительно хотим использовать стандартные инструменты для выполнения того, что должно быть стандартной операцией — кто-нибудь может сказать мне, является ли это ограничением или где я ошибаюсь?
Спасибо 🙂
Комментарии:
1. У меня точно такая же проблема. Если я помещаю пользовательские настройки в web.config, они шифруются, но если я использую configSource и храню их в отдельном файле, aspnet_regiis сообщает, что шифрование выполнено успешно, но узлы в файле не зашифрованы. Я также шифрую строки подключения в другом файле, который находится в том же каталоге, и он работает нормально, поэтому я знаю, что это не проблема с путем. Если кто-нибудь нашел ответ на этот вопрос, пожалуйста, дайте мне знать.
Ответ №1:
Я сравниваю ваш код с этим:
Чтобы зашифровать connectionStrings
раздел с помощью поставщика DPAPI с хранилищем ключей компьютера (конфигурация по умолчанию), выполните эту команду из командной строки:
aspnet_regiis -pe "connectionStrings" -app "/MachineDPAPI" -prov "DataProtectionConfigurationProvider"
где:
-pe
указывает раздел конфигурации для шифрования.
-app
указывает виртуальный путь к веб-приложению. Если приложение является вложенным, укажите вложенный путь из корневого каталога, например « /test/aspnet/MachineDPAPI
«.
-prov
указывает имя поставщика.
Интересно, нужно ли указывать название приложения? И / или провайдера?
И их версия заключает значения атрибутов в кавычки.
Комментарии:
1. Я указываю имя приложения «/» = root (в вашем случае у вас есть именованное приложение вне root). И нет, нет необходимости в Prov, как в документах: «Если вы не указываете поставщика, используя опцию -prov, используется поставщик, настроенный как defaultProvider».