Verbindungszeichenfolge aus App.config abrufen


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

Und das ist meine 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>

Aber wenn mein Projekt läuft, ist dies mein Fehler:

Der Objektverweis wurde nicht auf eine Instanz eines Objekts festgelegt.


5
Wo haben Sie diese App.config abgelegt? Projekt der Anwendung, die Sie ausführen, oder vielleicht eine DLL? Sie brauchen zuerst
abatishchev

3
Fügen Sie einen Verweis auf System.Configuration.dll hinzu, und Sie sollten in der Lage sein, den System.Configuration.ConfigurationManager zu verwenden.
Daszarrin

Ihre Verbindungszeichenfolge hat einen Tippfehler. Sie benötigen ein Leerzeichen zwischen "Integriert" und "Sicherheit"
Onur Omer

@OnurOmer - Frage wurde aktualisiert, um den Raum einzuschließen ("Integrierte Sicherheit" anstelle von "Integrierte Sicherheit")
SlimsGhost

Antworten:


484

Können Sie nicht einfach Folgendes tun:

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

Ihre Baugruppe benötigt auch einen Verweis auf System.Configuration.dll


14
Ich weiß, dass dies eine C # -Frage ist, aber da dies die Spitze der Google-Suchergebnisse ist, ist dies System.Configuration.ConfigurationManager.ConnectionStrings("Test").ConnectionStringfür diejenigen von uns, die VB-Code pflegen müssen
JFA

296

Da dies eine sehr häufige Frage ist, habe ich einige Screenshots von Visual Studio vorbereitet, um das Befolgen in 4 einfachen Schritten zu vereinfachen.

Verbindungszeichenfolge aus app.config abrufen


22
Ich liebe diese Antwort. Standardmäßig ist diese Bibliothek in meiner Version von VS (VS2012 Ultimate) nicht enthalten, using System.Configurationfunktioniert aber immer noch
David Colwell

3
Ich musste wirklich die Referenz hinzufügen oder die Verwendung war nicht unterstrichen, aber ConfigurationManager noch unbekannt. Vielen Dank!
CodingYourLife

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

1
Was ist, wenn app.config als Link zu einem Projekt hinzugefügt wird?
FrenkyB

2
Dies funktioniert nur, wenn Ihre Verbindungszeichenfolge eine App-Einstellung ist. Es funktioniert nicht, wenn <connectionStrings>Elemente aus app.config abgerufen werden (was das OP verlangt!).
BrainSlugs83

31

Überprüfen Sie auch, ob Sie die System.ConfigurationDLL in Ihre Referenzen aufgenommen haben. Ohne diese Funktion haben Sie keinen Zugriff auf die ConfigurationManagerKlasse im System.Configuration-Namespace.


22

Fügen Sie zunächst einen Verweis System.Configurationauf Ihre Seite hinzu.

using System.Configuration;

Dann erhalten Sie laut Ihrer app.config die Verbindungszeichenfolge wie folgt.

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

Jetzt haben Sie Ihre Verbindungszeichenfolge in der Hand und können sie verwenden.


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

Probieren Sie es aus

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

3

1) Erstellen Sie ein neues Formular und fügen Sie dieses hinzu:

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

Wenn Sie dann die Verbindung verwenden möchten, gehen Sie wie folgt vor:

 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()

und das ist es. Sie werden mit der DB verbunden und können Dinge tun.

Dies ist für vb.net, aber die Logik ist dieselbe.


3

Hast du es versucht:

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

3

Ich hatte das gleiche Problem. Meine Lösung wurde aus zwei Projekten aufgebaut. A Class libraryund eine Website, die auf das Klassenbibliotheksprojekt verweist. Das Problem war, dass ich versuchte, auf das App.configin meinem Class libraryProjekt zuzugreifen, aber das System suchte auf Web.configder Website. Ich habe die Verbindungszeichenfolge eingefügtWeb.config und ... Problem gelöst!

Der Hauptgrund war, dass trotz ConfigurationManagerder Verwendung in einer anderen Baugruppe innerhalb des laufenden Projekts gesucht wurde.


3

Mit dieser Methode können Sie die Verbindungszeichenfolge abrufen

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

Zuerst müssen Sie einen System.ConfigurationVerweis auf Ihr Projekt hinzufügen und dann den folgenden Code verwenden, um die Verbindungszeichenfolge abzurufen.

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

2

Das hat bei mir funktioniert:

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

Ausgänge:

Datenquelle =.; Erstkatalog = OmidPayamak; IntegratedSecurity = True "


1

Sie können die Verbindungszeichenfolge mithilfe der folgenden Codezeile abrufen -

using System; using System.Configuration;

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

Hier ist eine Referenz: Verbindungszeichenfolge aus App.config


2
Ich habe das Gleiche getan, wie du gesagt hast, aber den gleichen Null-Referenzfehler, den ich bekomme.
Enigmatic Mind

1

Es scheint, dass das Problem nicht mit der Referenz zusammenhängt. Sie erhalten den Verbindungsstring als null. Stellen Sie daher sicher, dass Sie der Konfigurationsdatei Ihres laufenden Projekts den Wert hinzugefügt haben, dh das Hauptprogramm / die Hauptbibliothek, die zuerst gestartet / ausgeführt wird.


1

Es ist möglich, dass das OP in dieser Frage versucht, eine App.Config innerhalb einer DLL zu verwenden.

In diesem Fall versucht der Code tatsächlich, auf die App.Config der ausführbaren Datei und nicht auf die DLL zuzugreifen. Da der Name nicht gefunden wird, wird eine Null zurückgegeben, daher die angezeigte Ausnahme.

Der folgende Beitrag kann hilfreich sein: ConnectionString aus app.config einer DLL ist null


0

Ich habe auf die System.ConfigurationBibliothek verwiesen und habe den gleichen Fehler. Die Debug-Dateien hatten nicht ihre app.config, erstellen Sie diese Datei manuell. Der Fehler ist, ich habe dieses Problem beim Kopieren der Datei "appname.exe.config" im Debug-Ordner behoben. Die IDE hat die Datei nicht erstellt.


0

Ich habe das Problem gelöst, indem ich den Index zum Lesen des Strings verwendet und nacheinander überprüft habe. Das Lesen mit dem Namen führt immer noch zum gleichen Fehler.
Ich habe das Problem, wenn ich eine C # -Fensteranwendung entwickle. Ich hatte das Problem nicht in meiner asp.net-Anwendung. Es muss etwas in der Einstellung sein, das nicht stimmt.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.