Зашифруйте приложение или Web.config с помощью aspnet_regiis - раздел 'xyz' не найден - PullRequest
1 голос
/ 30 марта 2019

Мой app.web.config имеет настраиваемый раздел конфигурации NameValueSectionHandler, но aspnet_regiis не может его найти.

Мне нужно развернуть мое приложение WPF на нескольких машинах с зашифрованным файлом app.config. Я уже пробовал много прохождение с aspnet_regiis, но ничего не работает. Я попробовал:

  1. Переименование app.config в app.web.config
  2. создать контейнер с открытым ключом aspnet_regiis -pc LiteContainer -exp
  3. Я застрял в шифровании раздела пользовательских настроек aspnet_regiis -pef connectionSettings D:\Tes -prov LiteProvider

Ошибка

"Раздел конфигурации 'connectionSettings' не найден".
Failed!

Но я успешно могу читать / записывать данные в этот раздел по коду.

App / Web.config

<configuration>
    <configSections>
      <section name="connectionSettings" type="System.Configuration.NameValueSectionHandler"/>

      <sectionGroup name="userSettings" .... </sectionGroup>
    </configSections>

    <connectionSettings>
      <server>192.168.1.xxx</server>
      <database>myDb</database>
      <uid>root</uid>
      <pwd>123</pwd>
    </connectionSettings>

  <configProtectedData>
    <providers>
      <add name="LiteProvider"
           keyContainerName="LiteContainer"
           useMachineContainer="true"
           description="Uses RsaCryptoServiceProvider to encrypt and decrypt"
           type="System.Configuration.RsaProtectedConfigurationProvider/>
    </providers>
  </configProtectedData>
</configuration>

Я не видел ни одного пошагового шифрования NameValueSectionHandler, многие использовали applicationSettings или connectionStrings. Что мне здесь не хватает?

enter image description here

1 Ответ

2 голосов
/ 30 марта 2019

Я думаю, что ваша команда неверна, даже если папка D: \ Tes содержит ваш web.config:

aspnet_regiis -pef connectionSettings D:\Tes -prov LiteProvider

Вы неправильно набрали Параметры соединения вместо connectionStrings :

%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis -pef "connectionStrings" <full path to directory containing web.config file>

не является ли синтаксис aspnet_regiis -pef [имя раздела] [путь web.config]?имя раздела - connectionSettings, а не connectionStrings


Вот результат, когда я пробую его на моем ПК.

  1. Скопируйте App.Config с AppSettings( или ConnectionStrings ) разделов в C: \ Temp и переименуйте его в Web.config.

  2. Запустите эту команду:% windir% \ Microsoft.NET \ Framework\ v2.0.50727 \ aspnet_regiis -pef "appSettings" c: \ Temp

enter image description here

После запуска команды aspnet_regiis, appSettings имеет видзашифровано:

enter image description here

Переименуйте C: \ Temp \ Web.Config в App.Config

Решение

Ваш XML не соответствует ожидаемому формату, например:

<server>192.168.1.xxx</server>
  <database>myDb</database>
  <uid>root</uid>

Использовать стандартное приложениеНастройки или формат строки подключения:

<appSettings>
    <add key="server" value="192.168.1.xxx"/>
    <add key="database" value="myDb"/>
    <add key="uid" value="root"/>
    <add key="pwd" value="123"/>
</appSettings>

REF: https://social.msdn.microsoft.com/Forums/windows/en-US/3b5a1d1f-aa57-40d8-8607-fee0b2a8a6db/protect-appconfig-file-or-encrypt?forum=winforms

https://docs.microsoft.com/en-us/dotnet/api/system.configuration.configurationmanager.appsettings?view=netframework-4.7.2

https://docs.microsoft.com/en-us/dotnet/api/system.configuration.configurationmanager.connectionstrings?view=netframework-4.7.2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...