Abrufen der Verbindungszeichenfolge aus appconfig-Datei in c#
Ich die folgende Verbindungszeichenfolge haben erklärt, in meinem app.config
Datei:
<connectionStrings>
<add name="SqlConnectionString" connectionString="Data Source=xxx.xx.xx.xx;Initial Catalog=xxxxx;User Id=xx;Password=xxx;" providerName="System.Data.SqlClient" />
</connectionStrings>
Wenn ich versuchen zu Holen dieser Verbindungszeichenfolge mit dem folgenden C# code-snippet, bekomme ich den Wert null
. Ich bin nicht in der Lage, um die Verbindung Zeichenfolge. Gibt es etwas falsch in der syntax?
Erster Versuch:
var settings = ConfigurationManager.ConnectionStrings["SqlConnectionString"];
string result = settings.ConnectionString;
Zweiter Versuch:
string result = ConfigurationSettings.AppSettings["SqlConnectionString"];
- Sind Sie sicher, dass es eine Datei bereitgestellt, die neben der Montage sind Sie ausgeführt, dass heißt
MyApp.exe.config
, und das beinhaltet den connection-string? Sind Sie mit NUnit? NUnit scheint, müssen Sie die app.config an einer anderen Stelle als normal, wenn ausgeführt wird es vom VS. Wenn Sie eine asp.net web-Projekt werden Sie wahrscheinlich benötigen, Ihre Verbindungszeichenfolge in einerweb.config
- Datei, nicht eine app.config-Datei... - Die erste syntax würde das richtige sein, um zu Holen den Wert aus der
<connectionStrings>
Abschnitt. Der zweite wird definitiv nicht funktionieren. - Nein, es ist nicht ein web-Projekt , die Ebene c# - Projekt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für einen nicht-web-Projekt, und mit app.config eingestellt, wie in der OP-hier ist, was ich normalerweise tun, da der config-Datei den Namen ändert, wenn die app kompiliert ist (zu yourapp.exe.Konfiguration):
Dann verweisen Sie die s ' th-Verbindungszeichenfolge:
Ersten, müssen Sie die
appSettings
tagZweiten, fügen Sie einen Verweis auf
System.Configuration
zu Ihrem Projekt und fügen Sie einusing System.Configuration
in der Quelle.Dann können Sie
ConfigurationManager.AppSettings
Zugriff auf Ihr config-Einstellung:Habe das gleiche problem, aber nach viel Forschung, entdeckte ich, dass der Grund, warum der code ist mit eine null-Verweis-Ausnahme ist, weil, wenn Sie die connectionString-Namen, es wird null zurückgeben, und wenn Sie versuchen, rufen Sie eine der ToString() oder die ConnectionString-Eigenschaft des ConfigurationManager.ConnectionStrings Eigenschaft, die ist, wenn die exception geworfen wird, so zu
Rückgabe die korrekte Verbindungszeichenfolge, die Sie haben, um index in der ConnectionStringSettings mit dem folgenden code.
Ich mache das, um mein connect-string "OracleDbContext"...
meine web.config sieht wie folgt aus:
Eine andere mögliche Ursache des Fehlers könnte sein, falsche Namensauflösung durch .NET framework.
Wenn der name der Anwendung ist mehr als die 8.3-Namen (zum Beispiel
GreatStuff.exe
) könnte es startete mit seinen kurzen 8.3-entspricht dem Namen (in meinem BeispielGREATS~1.EXE
) und .NETTO wird dann für dieapp.config
Datei einfach Anhängen.config
zu kurzer name. Und dies schlägt fehl.Eine Sache, die ich bemerkt habe beim kompilieren WinForm-App in VS 2013:
Füge ich Verbindungszeichenfolgen meine Settings-Datei - die updates meiner app.config-Datei
Wenn ich erwarten würde:
Muss ich schreiben:
Alles andere ist business as usual
Wird die obige Konfiguration funktioniert mit der API/code wie:
Die erste syntax ist definitiv gültig.
Mögliche Ursache ist, dass die Konfigurations-Datei wird nicht richtig geladen in der Anwendung. Ich will, um sicherzustellen, welche Art von Projekt es ist. Wenn es eine WinForm-Anwendung oder Konsolenanwendung, die Sie benötigen, legen Sie den in die app.config. Es erstellt werden .config geladen, wenn die Anwendung gestartet wird. Wenn Sie eine Web-Anwendung, ich fürchte, Sie können nicht fügen Sie die Knoten-app.config, da wird es auch nicht geladen werden. Sie müssen, um es in der web.config. Zusätzlich, wenn Sie wollen, um die Einstellungen in der config-Datei mit einer .net Bibliothek (DLL), die Konfigurationsdatei nicht geladen werden sowieso. Die Konfigurations-Datei wird nur dann Folgen die Haupt-Anwendung.
Gleiche problem. Basierend auf Merlyn Morgan-Graham und Edward Zhu Kommentare, ich baute mein Projekt, mit dem die app.config zum erstellen einer Anwendung.exe.config-Datei mit dem connection-string. Original erste syntax dann gearbeitet.
Anderen problem: habe Versucht, über die Projekt Eigenschaften-dialog ändern Sie die Verbindungszeichenfolge und Sie fügte hinzu, "Projekt.Meine.Mysettings. zu den Namen der Verbindungszeichenfolge. Was verursacht Fehler.
es ist ein weiterer Weg, dies zu tun für die Konsole app:
Lesen
und verwenden Sie dann