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.

Antworten:


177

System.ConfigurationAls Referenz hinzufügen .

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



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

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;

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;

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

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


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>

In Webprojekten ist es besser, WebConfigurationManager in System.Web.Configuration zu verwenden.
BJladu4

9
using System.Configuration;


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

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


2

Fügen Sie zuerst Folgendes hinzu:

using System.Configuration;

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.

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.