Ottieni la stringa di connessione da App.config


380
var connection = ConnectionFactory.GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);

E questo è il mio App.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <add name="Test" connectionString="Data Source=.;Initial Catalog=OmidPayamak;Integrated Security=True" providerName="System.Data.SqlClient" />
    </connectionStrings>
</configuration>

Ma quando il mio progetto viene eseguito questo è il mio errore:

Il riferimento non impostato su un'istanza di un oggetto.


5
Dove hai messo l'App.config? Progetto di applicazione in esecuzione o forse qualche dll? Devi prima
abatishchev,

3
Aggiungi un riferimento a System.Configuration.dll e dovresti essere in grado di utilizzare System.Configuration.ConfigurationManager.
daszarrin,

La stringa di connessione ha un refuso. È necessario uno spazio tra "Integrato" e "Sicurezza"
Onur Omer,

@OnurOmer - la domanda è stata aggiornata per includere lo spazio ("Sicurezza integrata" invece di "Sicurezza integrata")
SlimsGhost

Risposte:


484

Non puoi semplicemente fare quanto segue:

var connection = 
    System.Configuration.ConfigurationManager.
    ConnectionStrings["Test"].ConnectionString;

Anche il tuo assieme ha bisogno di un riferimento System.Configuration.dll


14
So che questa è una domanda C #, ma poiché questo è il top dei risultati di ricerca di Google, per farlo in VB, è System.Configuration.ConfigurationManager.ConnectionStrings("Test").ConnectionStringper quelli di noi che devono mantenere il codice VB
JFA,

296

Dal momento che questa è una domanda molto comune, ho preparato alcune schermate di Visual Studio per rendere più facile seguire in 4 semplici passaggi.

ottiene la stringa di connessione da app.config


22
Adoro questa risposta. Per impostazione predefinita nella mia versione di VS (VS2012 Ultimate) questa libreria non è inclusa, ma using System.Configurationfunziona ancora
David Colwell,

3
DOVREI davvero aggiungere il riferimento o l'utilizzo non è stato sottolineato ma ConfigurationManager sconosciuto. Grazie!
CodingYourLife,

33
string str = Properties.Settings.Default.myConnectionString; 

1
Cosa succede se app.config viene aggiunto come collegamento a un progetto?
FrenkyB,

2
<connectionStrings>Funzionerà solo se la stringa di connessione è un'impostazione dell'app, non funzionerà se per recuperare elementi da app.config (che è ciò che l'OP richiede!).
BrainSlugs83

31

Controlla anche di aver incluso la System.Configurationdll tra i tuoi riferimenti. Senza di essa, non avrai accesso alla ConfigurationManagerclasse nello spazio dei nomi System.Configuration.


22

Prima aggiungi un riferimento a System.Configurationalla tua pagina.

using System.Configuration;

Quindi, secondo la tua app.config, ottieni la stringa di connessione come segue.

string conStr = ConfigurationManager.ConnectionStrings["Test"].ToString();

Questo è tutto ora hai la tua stringa di connessione in mano e puoi usarla.


16
//Get Connection from web.config file
public static OdbcConnection getConnection()
{
    OdbcConnection con = new OdbcConnection();
    con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["con"].ConnectionString;
    return con;     
}

6

Prova questo

string abc = ConfigurationManager.ConnectionStrings["CharityManagement"].ConnectionString;

3

1) Crea un nuovo modulo e aggiungi questo:

Imports System.Configuration
Imports Operaciones.My.MySettings

Public NotInheritable Class frmconexion

    Private Shared _cnx As String
    Public Shared Property ConexionMySQL() As String
        Get
            Return My.MySettings.Default.conexionbd
        End Get
        Private Set(ByVal value As String)
            _cnx = value
        End Set
    End Property

End Class

quindi quando si desidera utilizzare la connessione, procedere come segue:

 Private Sub frmInsert_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

Dim cn As New MySqlConnection(frmconexion.ConexionMySQL)
cn.open()

e questo è tutto. Verrai connesso al DB e potrai fare cose.

Questo è per vb.net ma la logica è la stessa.


3

Hai provato:

var connection = new ConnectionFactory().GetConnection(
    ConfigurationManager.ConnectionStrings["Test"]
    .ConnectionString, DataBaseProvider);

3

Ho avuto lo stesso problema. la mia soluzione è stata creata da due progetti. A Class librarye un sito Web che fa riferimento al progetto della biblioteca di classe. il problema era che stavo provando ad accedere al App.configmio Class libraryprogetto ma il sistema stava cercando nel Web.configsito web. Ho inserito la stringa di connessioneWeb.config e ... problema risolto!

Il motivo principale era che nonostante ConfigurationManagerfosse usato in un altro assemblaggio stava cercando all'interno del progetto runnig.


3

È possibile utilizzare questo metodo per ottenere la stringa di connessione

using System; 
using System.Configuration;

private string GetConnectionString()
{
    return ConfigurationManager.ConnectionStrings["MyContext"].ConnectionString;
}

2
string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;

2

Per prima cosa devi aggiungere un System.Configurationriferimento al tuo progetto e quindi utilizzare il codice seguente per ottenere la stringa di connessione.

_connectionString = ConfigurationManager.ConnectionStrings["MYSQLConnection"].ConnectionString.ToString();

2

Questo ha funzionato per me:

string connection = System.Configuration.ConfigurationManager.ConnectionStrings["Test"].ConnectionString;

Uscite:

Origine dati = .; Initial Catalog = OmidPayamak; IntegratedSecurity = True "


1

Puoi recuperare la stringa di connessione utilizzando la riga di codice seguente:

using System; using System.Configuration;

var connectionString=ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;

Ecco un riferimento: Stringa di connessione da App.config


2
Ho fatto lo stesso come hai detto, ma ho riscontrato lo stesso errore di riferimento null.
Enigmatic Mind,

1

Sembra che il problema non sia relativo al riferimento, stai ricevendo il stringhe di connessione come nullo, quindi assicurati di aver aggiunto il valore al file di configurazione del tuo progetto in esecuzione, il che significa che il programma / libreria principale che viene avviato / eseguito per primo.


1

È possibile che l'OP in questa domanda stia tentando di utilizzare un App.Config all'interno di una dll.

In questo caso, il codice sta effettivamente tentando di accedere all'App.Config dell'eseguibile e non alla dll. Poiché il nome non viene trovato, viene restituito un valore Null, quindi viene mostrata l'eccezione.

Il seguente messaggio può essere utile: ConnectionString da app.config di una DLL è null


0

Ho fatto riferimento alla System.Configurationlibreria e ho lo stesso errore. I file di debug non avevano il loro app.config, creare manualmente questo file. L'errore è che ho risolto questo problema copiando il file "appname.exe.config" nella cartella di debug. L'IDE non ha creato il file.


0

Ho risolto il problema usando l'indice per leggere la stringa e controllando uno per uno. Leggere usando il nome dà ancora lo stesso errore.
Ho il problema quando sviluppo un'applicazione per finestra C #, non ho riscontrato il problema nella mia applicazione asp.net. Ci deve essere qualcosa nell'ambiente che non è giusto.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.