El sistema de configuración no pudo inicializarse

225

Soy nuevo en Visual Studio. Actualmente estoy creando un formulario de inicio de sesión.

Tengo este codigo

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);
}

Pero cada vez que intento escribir el nombre de usuario y la contraseña, hay un error llamado Error al inicializar el sistema de configuración . Me pregunto qué tipo de problema es este y cómo podría resolverlo.

Por favor ayuda.

sean
fuente
2
Solo otro escenario: si está buscando ConfigurationManager.Appsettings [""], asegúrese de que <appSettings> esté presente en la configuración. De lo contrario, obtendrá esta excepción
LCJ
1
Esto también puede suceder si tiene 2 ubicaciones para la configuración de aplicaciones
Lawrence Thurman

Respuestas:

392

Asegúrese de que su archivo de configuración (web.config si web o app.config si windows) en su proyecto comience 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>

Tenga en cuenta que dentro del configurationelemento, el primer hijo debe ser el configSectionselemento.

En la namepropiedad del sectionelemento, asegúrese de reemplazarlo YourProjectNamecon el nombre real de su proyecto.

Me ocurrió que creé un servicio web en un proyecto de biblioteca de clase, luego copié (sobrescribí) el archivo de configuración (para llevar la configuración de los puntos finales) a mi aplicación de Windows y comencé a tener el mismo problema. Me había quitado inadvertidamente configSections.

funcionó para mí, espero que ayude

feluco79
fuente
79
"dentro del elemento 'configuración', el primer hijo debe ser el elemento 'configSections'" << este fue el punto crucial para mí. Gracias.
demoncodemonkey
77
Solo otro escenario: si está buscando ConfigurationManager.Appsettings [""], asegúrese de que <appSettings> esté presente en la configuración. De lo contrario, obtendrá esta excepción
LCJ
66
configSectionsSolucionó mi problema donde existía el elemento pero ubicado más tarde parte de la aplicación.config. No puedo evitar preguntar por qué ocurrió este error. Pensé que los elementos XML no necesitan ser ordenados.
Tae-Sung Shin
3
Esto es correcto. ConfigSections debe ser el primer nodo secundario debajo del elemento de configuración.
Umang Desai
77
¡La forma en que Microsoft implementó esta aplicación.config se retrasa! ¡Lo menos que podrían hacer es lanzar un mensaje de error mejor!
codenamezero
105

Elimine los archivos de configuración antiguos de c: \ Users \ username \ AppData \ Local \ appname y c: \ Users \ username \ AppData \ Roaming \ appname y luego intente reiniciar su aplicación.

jarek
fuente
2
Gracias trabajando. ¿Pero todavía no entiendo cuál es el problema?
liquide
1
debajo de la carpeta local, el archivo user.config estaba en blanco. Después de eliminar la aplicación de carpeta local, comience a funcionar
Ozgur
3
Gracias funcionó. Pero, ¿cuál podría ser la razón de este error?
vasuy19
1
Mi archivo estaba lleno de valores bajos (0x00). Copié uno que funcionaba y luego estuvo bien
DanW
1
Mi archivo de configuración en esta ubicación se corrompió durante un evento de corte de energía - el archivo de configuración que normalmente es XML se llenó con bytes NUL
mroselli
19

A veces, el error ocurre porque una ventana crea un duplicado en el

C: \ Usuarios \ Datos de aplicación \ Local \ "Nombre de la aplicación" ...

Simplemente elimine esta carpeta y listo. intentalo.

Ashu Gupta
fuente
2
GRACIAS. No pude solucionar mi problema con las cadenas de archivos de configuración que no fueron "recogidas" por mi aplicación. Limpié los archivos de configuración, volví a generar el archivo .suo, eliminé todos los archivos .settings existentes y aún no podía cargar desde ningún archivo de configuración nuevo, pero no recibí ningún error en la compilación. Esta pesadilla finalmente ha llegado a su fin.
Rachael
13

Si ha agregado sus propias secciones de configuración personalizadas a su App.Config, asegúrese de haber definido la sección en el <configSections>elemento. Agregué mi XML de configuración pero olvidé declarar la sección de configuración en la parte superior, lo que causó la excepción "El sistema de configuración no se pudo inicializar".

Flash Gordon
fuente
3
Además, si tiene una sección declarada en la parte superior y el nombre en la sección a continuación tiene un error tipográfico, obtendrá este error. Si observa la InnerException de la excepción lanzada, le dirá qué sección es el problema.
shindigo
6

Tuve el mismo problema con una clase MSTest: Marlon Grech en su artículo dice que "el elemento debe definirse como el primer elemento en la configuración de la aplicación".

Así que asegúrese de que sea el primer elemento debajo del elemento. Había puesto AppSettings primero.

Alineado
fuente
ohh .. mi mal: de hecho lo hiciste pero no me di cuenta ;-) Gracias por la aclaración
kleopatra
4

Sé que esto ya ha sido respondido, pero tuve exactamente el mismo problema en mis pruebas unitarias. Me estaba arrancando el cabello, agregando una sección de Configuración de aplicaciones y luego declarando la sección de configuración según la respuesta. Finalmente descubrí que ya había declarado una sección appSettings más arriba en mi archivo de configuración. Ambas secciones apuntaron a mi archivo de configuración externo "appSettings.config", pero el primer elemento appSettings usaba el archivo de atributos mientras que el otro usaba el atributo configSource . Sé que la pregunta era sobre la conexión de Strings. Efectivamente, esto sucede si el elemento appSettings es el elemento connectionStrings que se duplica con diferentes atributos.

Con suerte, esto puede proporcionar a alguien más la solución antes de seguir el camino que hice, lo que lleva a perder una o dos horas. suspiro oh la vida de nosotros los desarrolladores. ¡Perdimos más horas algunos días depurando de lo que pasamos desarrollando!

csharpforevermore
fuente
Bingo. Tenía appSettingsy los applicationSettingsdos.
SushiGuy
3

¡Comencé a tener este problema después de desinstalar Oracle Client Drivers y eliminó mi C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ machine.config !

Copiarlo desde otra computadora resolvió el problema.

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

Si tiene configuraciones de ámbito de usuario, también puede tener un archivo user.config en algún lugar de la [Userfolder]\AppData\Local\[ProjectName]carpeta.

Si luego elimina la configuración de ámbito de usuario, user.config no se eliminará automáticamente y su presencia puede causar el mismo mensaje de error. Eliminar la carpeta hizo el truco para mí.

Wuolennaj
fuente
1

Wow, me llevó una eternidad descubrir esto. Por alguna razón, cambiar el atributo [assembly: AssemblyCompany("CompanyName")]en AssemblyInfo.cshizo que este error desapareciera. Estaba haciendo referencia a un proyecto que tenía un valor diferente para el atributo [assembly: AssemblyCompany("CompanyName")]. ¡Me aseguré de que ambos proyectos tuvieran el mismo valor de atributo y funcionó muy bien!

Tono Nam
fuente
¿Es esto un error? Difícilmente se puede esperar que el nombre de su empresa coincida con un proyecto de terceros al que haga referencia.
Denise Skidmore
1

Mismo problema conmigo Resolví mi problema eliminando verion = "v3.5" de App.config.

antes de

 <?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>

Solución

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

  <startup>

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

Aquí está cómo usar la versión en

Elemento de tiempo de ejecución de soporte de MSDN


fuente
1

Después de una larga búsqueda me di cuenta, esta excepción tiene una excepción interna que te dice exactamente qué está mal con tu archivo de configuración

Gerrie Pretorius
fuente
1
Estaba tratando de comentar, descomentar diferentes secciones de mi app.config y, en la excepción, ni siquiera se veía en la excepción interna. Y después de ver esta respuesta, encontré cuál era el problema. Gracias.
Sid
1

Solución fácil para proyectos .Net Core WinForms / WPF / .Net Standard Class Library

paso 1: instalarSystem.Configuration.ConfigurationManager por Nuget Manager

Paso 2: agrega un nuevo App.Configarchivo

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

Paso 3: Obtenga el valor

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

Si lo está llamando desde Class Libraryentonces, agregue el App.Configarchivo en su Proyecto principal.

fatihyildizhan
fuente
0

Vale la pena señalar que si agrega cosas como cadenas de conexión en la aplicación.config, que si agrega elementos fuera de las secciones de configuración definidas, no se quejará de inmediato, pero cuando intente acceder a él, entonces puede obtener Los errores anteriores.

Contraiga todas las secciones principales y asegúrese de que no haya elementos fuera de los definidos. Obviamente, cuando realmente lo has visto.

Anthony Horne
fuente
0

En mi caso, la única solución era agregar la referencia al System.Configurationen mi proyecto de prueba también.

Jose Santos
fuente
0

Esto es un poco tonto, pero para mí lo arreglé haciendo lo último del control de origen en mi código. Creo que alguien más agregó un nuevo elemento de configuración y necesitaba sobrescribir mis archivos de configuración. OP muestra el error que recibí, que realmente no me estaba apuntando en la dirección correcta.

DLeh
fuente
0

Yo también enfrenté el mismo problema, pero accidentalmente escribí sin escribir el, el anterior debería ir dentro de estas etiquetas. por lo tanto, surgió el error 'El sistema de configuración no pudo inicializarse'. Espero que ayude

Priyabrata biswal
fuente
0

En mi caso, tengo dos secciones de configuración en el archivo app.config. Después de eliminar el que se oculta en las líneas de código, la aplicación funciona bien.

Entonces, para alguien que tenga el mismo problema, verifique primero si tiene configuraciones de configuración duplicadas.

oopsdazie
fuente
0

Si se trata de un Azure WebJob, tuve que eliminar lo siguiente después de actualizar a la última versión 4.6.1.

  <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 esto ayude.

Dave Friedel
fuente
0

En mi caso, dentro de mi archivo .edmx había ejecutado el comando 'Actualizar modelo desde la base de datos'. Este comando agregó una cadena de conexión innecesaria a mi archivo app.config. Eliminé esa cadena de conexión y todo volvió a estar bien.

Colin
fuente
0

Resolví el problema usando el siguiente código

   <?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
fuente
0

Intente guardar el archivo .config como utf-8 si tiene algunos caracteres "especiales" allí. Ese fue el problema en mi caso de una aplicación de consola.

lukalev
fuente
0

Como @Flash Gordon mencionó en su comentario, deberá definir cualquier etiqueta personalizada (como una sección) en su archivo App.config , debajo <configSections>. Por ejemplo, está trabajando en un proyecto de automatización de prueba con SpecFlow y agregando <specFlow>etiquetas, luego una versión más simple de App.config se verá así: ingrese la descripción de la imagen aquí

DenisD
fuente
0

Acabo de tener esto y fue porque tenía un <configuration>elemento anidado dentro de un <configuration>elemento.

Mike Cheel
fuente
0

Reinicié Visual Studio e incluso toda la PC. Limpié el proyecto, reconstruí y eliminé el archivo bin.

Nada ayudó hasta que cambié la configuración de x64 a x86. Funcionó en x86, pero cuando lo cambié, ¡también funcionó!

Ali123
fuente
0

Intenté todas las soluciones anteriores tratando de descubrir por qué una de mis pruebas unitarias no pudo recoger la configuración de un archivo app.config que es perfecto.

Tenía 2 referencias al mismo ensamblaje así:

referencia duplicada

archivo de proyecto antes y después

Eliminar la referencia (duplicada) en amarillo lo arregló para mí.

Espero que esto funcione para otra persona, me volvió loco por un tiempo.

ElMatador
fuente
0

Si tiene una sección personalizada, debe mencionar eso en configSections justo debajo de la etiqueta de configuración.

Compruebe sus archivos de transformación, asegúrese de eliminar las etiquetas innecesarias. Solo la sección que va a variar debe estar allí en los archivos de transformación. no mencione la sección de configuración en los archivos de transformación si no es necesario. Esto también causaría el problema.

Si tiene algún error de sintaxis en machine.config, también se espera este error.

extractor
fuente