Произошло необработанное исключение типа System.Configuration.ConfigurationErrorsException в System.Configuration.dll. - PullRequest
0 голосов
/ 09 апреля 2020

В последние дни я пытался создать пользовательские секреты в консоли приложения в c#, но не смог создать секрет файла.

В итоге я последовал за этим руководством и наконец смог создать секрет. xml. Но когда я попытался прочитать данные из секретного файла. xml, он выдал мне эту ошибку:

Thrown exception: 'System.Configuration.ConfigurationErrorsException' in System.Configuration.dll
An unhandled exception of type 'System.Configuration.ConfigurationErrorsException' occurred in System.Configuration.dll
An error occurred while loading a configuration file: Unable to load the file or assembly 'Microsoft.Configuration.ConfigurationBuilders.UserSecrets, Version = 1.0.0.0, Culture = neutral' or one of its dependencies. The specified file can not be found.

Сначала я смог прочитать данные пароля из файла конфигурации, но когда я попытался прочитать его из секретного файла, это, кажется, не беспокоило.

Решение попыталось: - удалил ссылку на UserSecrets, затем добавил его снова, используя Nuget.

Вот мой код: нажмите здесь

App.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false"/>
    </configSections>
    <configBuilders>
        <builders>
          <add name="Secrets" userSecretsFile="c:\\secrets\\secret.xml" type="Microsoft.Configuration.ConfigurationBuilders.UserSecretsConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.UserSecrets, Version=1.0.0.0, Culture=neutral"/>
        </builders>
      </configBuilders>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1"/>
    </startup>
  <appSettings configBuilders="Secrets">
    <add key="password" value="This is a password placeholder"/>
  </appSettings>
</configuration>

Program.cs:

static void Main(string[] args)
        {
            var password = ConfigurationManager.AppSettings["password"];
            Console.WriteLine($"Password is {password}");
        }

1 Ответ

1 голос
/ 10 апреля 2020

На основании моего теста я нахожу решение. Вы можете попробовать изменить текущую версию. net framework

на 4.7.1 или более позднюю.

Нажмите Свойства-> выберите целевой каркас-> выберите. net Framework 4.7.2

как показано ниже:

enter image description here

Затем вы можете обратиться к тесту app.config I.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section name="configBuilders" type="System.Configuration.ConfigurationBuildersSection, System.Configuration, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" restartOnExternalChanges="false" requirePermission="false"/>
    </configSections>
    <configBuilders>
        <builders>
        <add name="Secrets" userSecretsFile="D:\\secrets.xml" type="Microsoft.Configuration.ConfigurationBuilders.UserSecretsConfigBuilder, Microsoft.Configuration.ConfigurationBuilders.UserSecrets, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/></builders>
    </configBuilders>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
    </startup>
  <appSettings configBuilders="Secrets">
    <add key="password" value="This is a password placeholder"/>
  </appSettings>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Configuration.ConfigurationBuilders.Base" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Вы можете знать. net Framework был изменен на v4.7.2.

Наконец, я могу получить правильный результат из консольного приложения.

enter image description here

...