2010-05-13 15 views
19

ho una console app che contiene un file di configurazione dell'applicazione contenente una stringa di connessione come illustrato di seguito:C# Configuration Manager. ConnectionStrings

<configuration> 
    <connectionStrings> 
    <add name="Target" 
     connectionString="server=MYSERVER; Database=MYDB; Integrated Security=SSPI;" /> 
    </connectionStrings> 
</configuration> 

Quando passo questo per il mio collegamento con:

ConfigurationManager.ConnectionStrings[1].ToString() 

ho due valori in là Quindi, usando il secondo nella collezione, la mia domanda è: da dove viene questa seconda?

Ho controllato la versione \ Bin e originale e non è mia! Ovviamente un sistema ne ha generato uno ma non l'ho mai visto prima? Qualcuno può illuminarmi?

La stringa di connessione mistero è:

data source=.\SQLEXPRESS; 
      Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf; 
      User Instance=true 

Questo non è un problema in quanto tale, vorrei solo sapere perché questo sta accadendo? Grazie in anticipo!

Per riferimento futuro a coloro che possono o non possono inciampare su questo, dopo aver scoperto il machine.config, è diventato evidente che è una pratica scorretta fare riferimento a una configurazione dal suo indice in quanto ogni stack sarà potenzialmente diverso, motivo per cui " Le chiavi "sono usate.

In questo caso il mio codice sarebbe:

ConfigurationManager.ConnectionStrings["Target"].ToString() 

Acclamazioni tutti!

+0

Ciao ragazzi! Sono illuminato :) – Yoda

risposta

26

Controlla il tuo machine.config. Se si desidera solo la voce, è possibile aggiungere un elemento <clear /> all'elemento <connectionStrings> in questo modo ...

<connectionStrings> 
    <clear /> 
    <add name="Target" 
     connectionString= 
      "server=MYSERVER; Database=MYDB; Integrated Security=SSPI;" /> 
</connectionStrings> 
+0

Questo è perfetto, grazie mille. –

3

È definito nel file machine.config ed è globale per tutte le applicazioni .Net sulla macchina.

Le stringhe di connessione "impilano" attraverso la gerarchia di configurazione, motivo per cui il nome dell'elemento per la propria stringa di connessione è contrassegnato come "aggiungi". Stai aggiungendo la tua stringa di connessione all'elenco delle stringhe di connessione a livello di macchina.

Potrebbe essere preferibile utilizzare:

ConfigurationManager.ConnectionStrings["Target"].ConnectionString 

per essere sicuri di ottenere il proprio stringa di connessione, anche se il machine.config viene modificato.

+0

haha ​​ha appena modificato il mio post per consentire questo, quindi ho visto la tua modifica.Giusto! – Yoda

3

Controllare il file machine.config (in WindowsDir \ Framework). Ho appena controllato il mio e ho la stessa cosa.

0

L'Indice primo elemento della connessione variabili stringhe viene memorizzato per impostazione predefinita e che è rappresenta la membership> stringa di connessione al database.

Causa della considerazione per CLR deve essere utilizzata durante l'applicazione, in modo che il CLR per vostro conto lo allega Di default.

Come quello che fa il CLR con Costruttore predefinito nella Creazione classe senza Costruttore.

Problemi correlati