Lesen Sie die Verbindungszeichenfolge aus web.config

253

Wie kann ich eine Verbindungszeichenfolge aus einer web.configDatei in eine öffentliche Klasse lesen, die in einer Klassenbibliothek enthalten ist?

Ich habe es versucht:

WebConfigurationManager

ConfigurationManager

Diese Klassen werden jedoch in meiner Klassenbibliothek nicht erkannt.

Chamara
quelle

Antworten:

177

System.ConfigurationAls Referenz hinzufügen .

Aus irgendeinem bizarren Grund ist es standardmäßig nicht enthalten.

peteisace
quelle
510

Sie müssen einen Verweis hinzufügen System.Configurationund dann verwenden:

System.Configuration.ConfigurationManager.
    ConnectionStrings["connectionStringName"].ConnectionString;
Muhammad Akhtar
quelle
19
MSDN, System.configuration . Es braucht System.Configuration.dll.
AechoLiu
66

C #

// Add a using directive at the top of your code file    
using System.Configuration;

// Within the code body set your variable    
string cs = ConfigurationManager.ConnectionStrings["connectionStringName"].ConnectionString;

VB

' Add an Imports statement at the top of your code file    
Imports System.Configuration

' Within the code body set your variable    
Dim cs as String = ConfigurationManager.ConnectionStrings("connectionStringName").ConnectionString
MDM
quelle
3
"Fügen Sie eine Referenz oben in Ihre Codedatei ein" => das ist eine using-Direktive, keine Referenz!
Mishax
25

Fügen Sie dann System.Configurationals Referenz hinzu:

 using System.Configuration;

 ...

 string conn = 
    ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString;
Nirmus
quelle
19

Ich denke, Sie müssen einen Verweis auf die System.Configuration- Assembly hinzufügen, falls dieser noch nicht hinzugefügt wurde.

Möglicherweise müssen Sie auch die folgende Zeile oben in Ihre Codedatei einfügen:

using System.Configuration;
Akram Shahda
quelle
Tippfehler, es sollte System.Configuration verwenden;
Nick Binnet
14

In VB: Das sollte funktionieren

ConfigurationManager.ConnectionStrings("SQLServer").ConnectionString

Darin C#wäre (laut Kommentar von Ala)

ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa
quelle
Diese Klammern müssen in Klammern stehen.
Charles Burns
1
@ CharlesBurns, danke, ich schrieb versehentlich in VB, in C # sicher sollte es sein ConfigurationManager.ConnectionStrings["SQLServer"].ConnectionString
Alaa
Ahh, ich wusste nicht einmal, dass das VB war. Ich dachte, es wäre ein Tippfehler. In gewisser Weise auch mein Fehler.
Charles Burns
13
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.DataVisualization.Charting;
using System.Web.UI.WebControls;  

C #

string constring = ConfigurationManager.ConnectionStrings["ABCD"].ConnectionString;
                using (SqlConnection con = new SqlConnection(constring))

UNTEN WEB.CONFIG FILE CODE

<connectionStrings>
    <add name="ABCD" connectionString="Data Source=DESKTOP-SU3NKUU\MSSQLSERVER2016;Initial Catalog=TESTKISWRMIP;Integrated Security=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>

Im obigen Code ist ABCD der Verbindungsname

subramanya46
quelle
Ergänzung: Neben dem Indexer, der den Namen der Verbindungszeichenfolge akzeptiert, dürfen auch ganzzahlige Indizes verwendet werden. Dies ist nützlich, wenn Sie alle Verbindungszeichenfolgen in einer forSchleife ( for (int i = 0; i < numOfConnections; i++) { var conn = ConfigurationManager.ConnectionStrings[i]; ... }) lesen und in einer Combobox auswählbar machen möchten . Mit können var numOfConnections = ConfigurationManager.ConnectionStrings.Count;Sie bestimmen, wie viele Verbindungszeichenfolgen vorhanden sind. In diesem Beispiel conn.Nameenthält der Name der Verbindung.
Matt
11

Sie müssen diese Klasse oben auf Ihrer Seite oder Klasse aufrufen:

using System.Configuration;

Anschließend können Sie diese Methode verwenden, die die Verbindungszeichenfolge zurückgibt, die zur Übergabe an das sqlconnection-Objekt bereit ist, um Ihre Arbeit wie folgt fortzusetzen:

    private string ReturnConnectionString()
    {
       // Put the name the Sqlconnection from WebConfig..
        return ConfigurationManager.ConnectionStrings["DBWebConfigString"].ConnectionString;
    }

Nur um eine klare Klarstellung zu machen, ist dies der Wert in der Webkonfiguration:

  <add name="DBWebConfigString" connectionString="....." />   </connectionStrings>
Ahmed Elbatt
quelle
In Webprojekten ist es besser, WebConfigurationManager in System.Web.Configuration zu verwenden.
BJladu4
9
using System.Configuration;


string conn = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();
Saravanan G.
quelle
4
using System.Configuration;


string connString = ConfigurationManager.ConnectionStrings["ConStringName"].ToString();

Denken Sie daran, ConnectionStrings [Index] nicht zu verwenden, da Sie möglicherweise über die globale Computerkonfiguration und Portabilität verfügen

cyberspiritwebsolutions ugo
quelle
2

Fügen Sie zuerst Folgendes hinzu:

using System.Configuration;
Ali
quelle
1

Jeder scheint das Hinzufügen vorzuschlagen

using System.Configuration;

was wahr ist.

Aber könnte ich vorschlagen, dass Sie über die Installation der Visual Studio-Erweiterung von ReSharper nachdenken?

Wenn es installiert ist, wird anstelle eines Fehlers angezeigt, dass eine Klasse nicht definiert ist, eine Eingabeaufforderung angezeigt, die angibt, in welcher Assembly sie sich befindet, und Sie werden gefragt, ob die erforderliche using-Anweisung hinzugefügt werden soll.

Jeff Dege
quelle