Falha ao inicializar o sistema de configuração

225

Eu sou novo no Visual Studio. Atualmente, estou criando um formulário de login.

Eu tenho esse código.

string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
try
{
    using (OdbcConnection connect = new OdbcConnection(connectionString))
    {
        connect.Open();
        OdbcCommand cmd = new OdbcCommand("SELECT username, password FROM receptionist", connect);
        OdbcDataReader reader = cmd.ExecuteReader();

        if (username_login.Text == username && password_login.Text == password)
        {
            this.Hide();
            MessageBox.Show("Invalid User", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            this.Close();
        }
        else 
            MessageBox.Show("Invalid User", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        connect.Close();
    }
}
catch (OdbcException ex)
{
    MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}

Mas sempre que tento digitar o nome de usuário e a senha, ocorre um erro chamado Sistema de configuração que não foi inicializado . Só estou me perguntando que tipo de problema é esse e como eu poderia resolver isso?

Por favor ajude.

sean
fonte
2
Apenas outro cenário - Se você estiver procurando pelo ConfigurationManager.Appsettings [""], verifique se o <appSettings> está presente na configuração. Caso contrário, você vai ter essa exceção
LCJ
1
Isso também pode acontecer se você tiver 2 locais para appsettings
Lawrence Thurman

Respostas:

392

Certifique-se de que seu arquivo de configuração (web.config se web ou app.config se windows) em seu projeto seja iniciado como:

<?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="applicationSettings" 
                      type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >

            <section name="YourProjectName.Properties.Settings" 
                     type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
                     requirePermission="false" />

        </sectionGroup>
    </configSections>
</configuration>

Observe que dentro do configuration elemento, o primeiro filho deve ser oconfigSections elemento.

Na namepropriedade no sectionelemento, certifique-se de substituirYourProjectName pelo nome do seu projeto real.

Ocorreu-me que eu criei um serviço da web em um projeto de biblioteca de classes, copiei (substitui) o arquivo de configuração (para trazer a configuração dos pontos de extremidade) para meu aplicativo do Windows e comecei a ter o mesmo problema. Eu removi inadvertidamenteconfigSections .

funcionou para mim, espero que ajude

feluco79
fonte
79
"dentro do elemento 'configuration', o primeiro filho deve ser o elemento 'configSections'" << esse foi o ponto crucial para mim. Obrigado.
demoncodemonkey
7
Apenas outro cenário - Se você estiver procurando pelo ConfigurationManager.Appsettings [""], verifique se o <appSettings> está presente na configuração. Caso contrário, você vai ter essa exceção
LCJ
6
Corrigiu meu problema onde o configSectionselemento existia, mas localizou parte posterior do app.config. Não posso deixar de perguntar por que esse erro aconteceu. Eu pensei que elementos XML não precisam ser pedidos.
Tae-Sung Shin
3
Isto está certo. O configSections deve ser o primeiro nó filho em, elemento de configuração.
Umang Desai
7
A maneira como a Microsoft implementou este app.config é retardada !!! O mínimo que eles poderiam fazer é lançar uma mensagem de erro melhor!
Codenamezero
105

Exclua os arquivos de configuração antigos de c: \ Users \ nome de usuário \ AppData \ Local \ appname e c: \ Users \ nome do usuário \ AppData \ Roaming \ AppName e tente reiniciar o aplicativo.

jarek
fonte
2
Obrigado, trabalhando. Mas ainda não entendi o que é problema?
precisa
1
na pasta local, o arquivo user.config estava em branco. Depois de eliminar aplicativo pasta local começar a trabalhar
Ozgur
3
Graças, funcionou. Mas qual poderia ser a razão desse erro.
precisa saber é o seguinte
1
Meu arquivo foi preenchido com valores baixos (0x00). Eu copiei um que estava funcionando e então estava tudo bem #
DanW 07/12/2015
1
Meu arquivo de configuração neste local foi corrompido durante um evento de falta de energia - o arquivo de configuração que normalmente é XML foi preenchido com bytes NUL
mroselli
19

Às vezes, o erro ocorre porque uma janela cria uma duplicata no diretório

C: \ Usuários \ Dados do Aplicativo \ Local \ "Você Nome do Aplicativo" ...

Apenas exclua esta pasta e pronto. tente.

Ashu Gupta
fonte
2
OBRIGADO. Não foi possível corrigir meu problema com as seqüências de arquivos do arquivo de configurações que não foram "selecionadas" pelo meu aplicativo. Limpei os arquivos de configuração, gere novamente o arquivo .suo, excluí todos os arquivos .settings existentes e ainda não consigo carregar de nenhum novo arquivo de configurações, mas não recebi nenhum erro na compilação. Este pesadelo finalmente chegou ao fim.
Rachael
13

Se você adicionou suas próprias seções de configuração personalizada à sua App.Config, verifique se definiu a seção no <configSections>elemento Eu adicionei o XML da minha configuração, mas esqueci de declarar a seção de configuração no topo - o que causou a exceção "O sistema de configuração falhou ao inicializar" para mim.

Flash Gordon
fonte
3
Além disso - se você tiver uma seção declarada no topo e o nome na seção abaixo tiver um erro de digitação, você receberá esse erro. Se você olhar para a InnerException da exceção lançada, ela informará qual seção é o problema.
shindigo
6

Eu tive o mesmo problema com uma classe MSTest: Marlon Grech em seu artigo diz "o elemento precisa ser definido como o primeiro elemento no App.config".

Portanto, verifique se esse é o primeiro elemento abaixo do elemento. Eu coloquei o AppSettings em primeiro lugar.

Alinhado
fonte
ohh .. meu mau: você de fato fez, mas eu não percebi ;-) Obrigado pelo esclarecimento
kleopatra
4

Sei que isso já foi respondido, mas tive exatamente o mesmo problema em meus testes de unidade. Eu estava arrancando os cabelos - adicionando uma seção appSettings e depois declarando a seção de configuração conforme a resposta. Finalmente descobri que já havia declarado uma seção appSettings no meu arquivo de configuração. Ambas as seções apontaram para o meu arquivo de configurações externas "appSettings.config", mas o primeiro elemento appSettings usando o arquivo de atributo, enquanto a outra usou o atributo configSource . Eu sei que a pergunta era sobre o connectionStrings. Com certeza, isso acontece se o elemento appSettings for o elemento connectionStrings que está sendo duplicado com atributos diferentes.

Felizmente, isso pode fornecer a outra pessoa a solução antes que ela siga o caminho que fiz, o que leva a perder uma ou duas horas. suspiro oh a vida de nós desenvolvedores. Perdemos mais horas alguns dias em depuração do que gastamos desenvolvendo!

csharpforevermore
fonte
Bingo. Teve appSettingse applicationSettingsambos.
SushiGuy
3

Comecei a ter esse problema após desinstalar o Oracle Client Drivers e ele removeu meu C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ machine.config !

Copiá-lo de outro computador resolveu o problema.

Jeremy Thompson
fonte
3
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="xyz" value="123" />    
  </appSettings>
</configuration>
Lenin Edwin
fonte
3

Se você tiver configurações de escopo do usuário, também poderá ter um arquivo user.config em algum lugar da [Userfolder]\AppData\Local\[ProjectName]pasta.

Se você remover posteriormente as configurações do escopo do usuário, o user.config não será removido automaticamente e sua presença poderá causar a mesma mensagem de erro. A exclusão da pasta fez o truque para mim.

Wuolennaj
fonte
1

Uau, levei uma eternidade para descobrir este. Por alguma razão, alterar o atributo [assembly: AssemblyCompany("CompanyName")]em AssemblyInfo.csfez esse erro desaparecer. Eu estava referenciando um projeto que tinha um valor diferente para o atributo [assembly: AssemblyCompany("CompanyName")]. Eu verifiquei se os dois projetos tinham o mesmo valor de atributo e funcionou muito bem!

Tono Nam
fonte
Isso é um inseto? Não se pode esperar que o nome da sua empresa corresponda a um projeto de terceiros ao qual você se refere.
Denise Skidmore
1

Mesmo problema comigo, resolvi o problema removendo verion = "v3.5" do App.config.

Antes

 <?xml version="1.0" encoding="utf-8"?>
  <configuration>

  <startup>

 <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
 </startup>
 <supportedRuntime version="v3.5" />//Remove this
</configuration>

Solução

<?xml version="1.0" encoding="utf-8"?>
<configuration>

  <startup>

    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2"/>
  </startup>
  </configuration>

Aqui está como usar a versão em

Elemento de tempo de execução do suporte do MSDN


fonte
1

Após uma longa pesquisa, percebi que essa exceção possui uma exceção interna que informa exatamente o que há de errado com seu arquivo de configuração

Gerrie Pretorius
fonte
Eu estava tentando comentar - descomente diferentes seções do meu app.config e, na exceção, nem olhou para a exceção interna. E depois de ver esta resposta, descobri qual era o problema. Obrigado.
Sid
0

Vale a pena notar que, se você adicionar coisas como cadeias de conexão no app.config, se você adicionar itens fora das seções de configuração definidas, ele não reclamará imediatamente, mas quando você tentar acessá-lo, poderá obter os erros acima.

Recolha todas as seções principais e verifique se não há itens fora dos definidos. Óbvio, quando você realmente o viu.

Anthony Horne
fonte
0

No meu caso, a única solução foi adicionar a referência ao System.Configurationno meu projeto de teste também.

Jose Santos
fonte
0

Isso é meio idiota, mas para mim eu o corrigi, obtendo as últimas informações do controle de origem no meu código. Eu acho que havia algum novo elemento de configuração que foi adicionado por outra pessoa, e eu precisava sobrescrever meus arquivos de configuração. O OP mostra o erro que eu recebi, o que não estava realmente me apontando na direção certa.

DLeh
fonte
0

Eu também enfrentei o mesmo problema, mas acidentalmente escrevi o sem escrever o, o anterior deve ir dentro dessas tags. portanto, o erro 'O sistema de configuração falhou ao inicializar' estava surgindo. Espero que ajude

Priyabrata biswal
fonte
0

No meu caso, tenho duas configurações no arquivo app.config. Depois de excluir o que está oculto nas linhas de código, o aplicativo funciona bem.

Portanto, para alguém com o mesmo problema, verifique se você tem configurações duplicadas primeiro.

oopsdazie
fonte
0

Se você estiver lidando com um Azure WebJob - tive que remover o seguinte após atualizar para o 4.6.1 mais recente.

  <compilation debug="true" targetFramework="4.6.1">
    <assemblies>
      <add assembly="System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
    </assemblies>
  </compilation>

Espero que isto ajude.

Dave Friedel
fonte
0

No meu caso, no meu arquivo .edmx, executei o comando 'Atualizar modelo do banco de dados'. Este comando adicionou uma cadeia de conexão desnecessária ao meu arquivo app.config. Eu apaguei essa cadeia de conexão e tudo ficou bom novamente.

Colin
fonte
0

Resolvi o problema usando o código abaixo

   <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings"
                  type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >

      <section name="YourProjectName.Properties.Settings"
               type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
               requirePermission="false" />

    </sectionGroup>

  </configSections>
  <appSettings>
    <add key="SPUserName" value="TestUser" />
    <add key="SPPassword" value="UserPWD" />
  </appSettings>
</configuration>
Sumant Singh
fonte
0

Tente salvar o arquivo .config como utf-8 se você tiver alguns caracteres "especiais". Esse foi o problema no meu caso de um aplicativo de console.

lukalev
fonte
0

Como o @Flash Gordon mencionado em seu comentário, você precisará definir qualquer tag personalizada (como uma seção) no seu arquivo App.config , em <configSections>. Por exemplo, você está trabalhando em um projeto de automação de teste com SpecFlow e adicionando <specFlow>tags, então uma versão mais simples do App.config ficará assim: insira a descrição da imagem aqui

DenisD
fonte
0

Acabei de ter isso e foi porque eu tinha um <configuration>elemento aninhado dentro de um <configuration>elemento.

Mike Cheel
fonte
0

Eu reiniciei o Visual studio e até mesmo o PC inteiro. Limpei o projeto, reconstruí e excluí o arquivo bin.

Nada ajudou até eu alterar a configuração de x64 para x86. Funcionou em x86, mas quando eu mudei de volta, também funcionou!

Ali123
fonte
0

Eu tentei todas as soluções acima tentando descobrir por que um dos meus testes de unidade estava falhando ao pegar a configuração de um arquivo app.config que é perfeito.

Eu tinha duas referências à mesma montagem da seguinte forma:

referência duplicada

arquivo de projeto antes e depois

A remoção da referência (duplicada) em amarelo a corrigiu.

Espero que isso funcione para outra pessoa, isso me deixou louco por um tempo.

O matador
fonte
0

Solução fácil para projetos de .Net Core WinForms / WPF / .Net Standard Class Library

etapa 1: instalar System.Configuration.ConfigurationManagerpelo Nuget Manager

etapa 2: adicionar um novo App.Configarquivo

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Bodrum" value="Yalikavak" />    
  </appSettings>
</configuration>

Etapa 3: obter o valor

string value = ConfigurationManager.AppSettings.Get("Bodrum");
// value is Yalikavak

Se você estiver chamando a partir de um Class Library, adicione o App.Configarquivo no seu Projeto Principal.

fatihyildizhan
fonte
0

Se você possui uma seção personalizada, é necessário mencionar que em configSections logo abaixo da tag de configurações.

Verifique seus arquivos de transformação, remova as tags desnecessárias. Somente a seção que variará precisa estar presente nos arquivos de transformação. não mencione a seção de configuração nos arquivos de transformação, se não for necessário. isso também causaria o problema.

Se você tiver algum erro de sintaxe em machine.config, também será esperado esse erro.

extrator
fonte