2011-09-01 3 views
7

A seguito di numerosi esempi, ho aggiunto il seguente al mio file app.config:C# - Settings.settings apertura ottiene errore su XML non valido in app.config (quando configSource aggiunto)

Tutto sembra funzionare quando eseguo l'applicazione, ma quando provo ad aprire il file Settings.settings, viene visualizzato l'errore:

"Si è verificato un errore durante la lettura del file app.config. Il file potrebbe essere danneggiato o contenere XML non valido."

Il file Settings.settings si apre ma ottengo un messaggio di errore simile se provo a salvarlo.

file app.config:

<configSections> 
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" > 
     <section name="test.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" /> 
    </sectionGroup> 
</configSections> 

<userSettings> 
    <test.Properties.Settings> 
     <setting name="server" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="database" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="g_language" serializeAs="String"> 
      <value>en-US</value> 
     </setting> 
     <setting name="timeSchedule1" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="timeSchedule2" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="helpLocation" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="SQLAuthType" serializeAs="String"> 
      <value>0</value> 
     </setting> 
     <setting name="SQLLogin" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="SQLPsw" serializeAs="String"> 
      <value /> 
     </setting> 
     <setting name="defaultTimeZone" serializeAs="String"> 
      <value /> 
     </setting> 
    </test.Properties.Settings> 
</userSettings> 

<connectionStrings configSource = "testConnect.config"/> 

+0

È tutto il tuo 'app.config'? Se è così, manca l'elemento circostante '' ... ''. –

+1

No, ha le altre cose - in qualche modo l'ho perso nella copia e incolla. – Pat

+1

Sembra essere correlato a configSource su connectionStrings. Ho deciso di rimuovere quella sezione quando apporto le modifiche alle impostazioni e poi la rimetto. Vedo solo questo in VS2008. – Carl

risposta

0

Sembra che il tuo file di configurazione app non è configurato correttamente, potrebbe postare config app?

4

stavo appena consegnato un progetto che è stato generando lo stesso errore quando si tenta di aprire il file Settings.settings:

"An error occurred while reading the app.config file. The file might be corrupted or contain invalid XML."

dopo aver verificato che il documento XML è sintatticamente corretto (utilizzando http://validator.w3.org), rimuovo Elementi XML fino alla scomparsa dell'errore.

Nel mio caso, il file app.config conteneva due connectionStrings elementi:

genera l'errore

  • configurazione
    • connectionStrings
      • aggiungono
    • connectionStrings
      • aggiungere

NO errore generato

  • configurazione
    • connectionStrings
      • Aggiungi
      • aggiungere

Così sembra che questo errore può essere generato quando l'applicazione.Il file di configurazione contiene elementi sintatticamente corretti, ma logicamente errati.

+0

Lo stesso problema - stessa soluzione. – Denis

+0

Ho avuto lo stesso problema, ma avevo due degli stessi elementi

in . – bunggo

1

Ho riscontrato lo stesso errore durante la ridenominazione manuale di una soluzione, si tratta di progetti e spazi dei nomi. L'errore è stato causato dalla duplicazione degli elementi <section> nel nodo <sectionGroup name="applicationSettings"> del file App.config. Non sono sicuro di quale azione abbia causato la creazione degli elementi duplicati, ma la soluzione è stata la rimozione dell'elemento duplicato.

0

Ho anche avuto questo problema. Sembra che possa essere causato da "stranezze" multiple all'interno del tuo file app.config.

Il modo in cui ho risolto:

  1. Eseguire una copia di backup del file di impostazioni e cs, anche del vostro app.config (nel caso)
  2. Rimuovere gli elementi configSections riferimento a impostazioni, per esempio UserSettings da app.config
  3. Rimuovere le ApplicationSettings o sezioni UserSettings da app.config
  4. Salvare l'app.config
  5. Aprire l'editor delle impostazioni e fare qualsiasi piccolo cambiamento, risparmiare

Se viene ancora l'errore, inizia a rimuovere le sezioni una alla volta fino a trovare la sezione duplicata/offendente.

2

Ho lo stesso problema. Come voi, ho stringhe di connessione in un file separato:

<connectionStrings configSource = "testConnect.config"/> 

io non sono riuscito a trovare un lavoro in giro, altro che rimuovere l'elemento durante il lavoro con le impostazioni.

0
<configuration> 
    <connectionStrings> 
    <add name="" 
    </connectionStrings> 
</configuration> 

Nel mio caso ho avuto molte stringhe di connessione e uno della stringa in <add name> era vuoto. Ho anche avuto lo stesso errore di Pressacco menzionato. Grazie!

0

I bastone in questo modo troppo tardi ma anche io ho avuto lo stesso problema e anche se tutto sembrava corretto in app.config, stavo ottenendo questo errore. Dopo aver aggiunto alcune impostazioni di proprietà al file app.config, stavo cercando di modificare/aprire il file Settings.settings e questo è il momento in cui ho ricevuto questo errore. Quello che ho fatto è stato, ho ripristinato tutte le modifiche apportate a app.config e aggiunto tutti i valori richiesti direttamente al file delle impostazioni, che ha risolto il problema. L'aggiunta diretta di valori a app.config stava creando il problema.

0
  1. Su un'altra soluzione VS, creare un nuovo progetto con lo stesso nome e lo stesso spazio dei nomi su cui si è lavorato.
  2. In Proprietà >> Impostazioni per il nuovo progetto, creare tutte le impostazioni come in quella su cui si sta lavorando.
  3. Passare alla nuova cartella del progetto, ad es. C: \ Users \ YourUser \ Documents \ Visual Studio 2022 \ Projects \ ReportsApplication1 \ ReportsApplication1 e copiare l'app.file di
  4. Incolla questo file di configurazione e sostituire quello nel progetto corrente
  5. (Fatto)
1

sto usando configSource nell'elemento connectionStrings pure. Penso che il problema che ho avuto è stato che mi riferivo al file di configurazione incluso con un percorso relativo alla directory di destinazione della build (ad esempio bin \ debug \ ConnectionStrings.config). Ho il mio set di elementi collegati ConnectionStrings.config da copiare nella directory di output su build. Tuttavia, l'IDE VS vuole risolverlo prima della compilazione da app.settings anziché da bin\debug\program.exe.settings, quindi sono bloccato con una copia di questo file di configurazione aggiuntivo in ogni progetto (che rimuove il vantaggio) o utilizzando un percorso completo. Se devo usare il secondo approccio, dovrei esprimere il percorso in termini di qualche tipo di variabile di ambiente in modo che il file di configurazione possa funzionare su una macchina di sviluppo e sulla macchina di distribuzione. Questo potrebbe essere doable, ma sembra .NET won't actually expand the environment variables.

Se è utile, provare a convalidare app.config con lo schema come descritto in https://stackoverflow.com/a/311835/611672. Nel mio caso, l'xml supera la convalida, ma ricevo comunque il messaggio di errore.

Inoltre, se qualcuno ha difficoltà ad aggiungere una migrazione al primo codice con questa configurazione (ottenendo un errore che non riesce a trovare connectionStrings.config), questa è probabilmente la stessa causa principale.