2012-02-22 10 views
6

Ho una soluzione con 4/5 progetti.Dove devo mettere le mie stringhe di connessione per la mia libreria di classi e come posso accedervi?

Attualmente ho la stringa di connessione per il mio progetto di dominio codificato in un file C#.

Vorrei mettere questo in un web.config o qualcosa del genere. Da quello che ho letto qui e altrove dovrei memorizzare queste stringhe di connessione nella configurazione web dell'applicazione chiamante?

Se sì, come posso accedervi?

Quando faccio qualcosa di simile nella mia libreria di classi:

ConnectionStringSettingsCollection connectionStrings = 
    connectionStringsSection.ConnectionStrings; 

Il tipo o dello spazio dei nomi non è stato trovato, mi sto perdendo un punto di riferimento o qualcosa del genere?

+0

Per qualche strana ragione (Microsoft, lo sai) l'assembly richiesto non è referenziato di default. È necessario aggiungere manualmente il riferimento all'assembly 'System.Configuration' a ciascun progetto che deve utilizzarlo. –

risposta

4

C'è uno schema esistente nello schema config per le stringhe di connessione.

Questo va sotto l'elemento <configuration>:

<connectionStrings> 
    <add name="example" connectionString="..."/> 
</connectionStrings> 

Nel codice, è necessario utilizzare ConfigurationManager per accedervi. Per avere il riferimento ad esso è necessario aggiungere uno spazio dei nomi using System.Configuration; al file e il riferimento all'assembly System.Configuration.dll al progetto (se non già presente).

string conn = ConfigurationManager.ConnectionStrings["example"]; 
+0

ConfigurationManager è una buona scelta e altre 2 scelte che ricordo ora: Registro e file binario (utilizzando formattatore binario), controllare questo: http: // stackoverflow.it/questions/9375112/storing-application-settings-in-project-folder-piuttosto-than-appdata/9375425 # 9375425 –

+2

@AmenAyach - Poiché l'OP ha chiesto espressamente di 'web.config', i file di registro e binari non sono realmente adatto. – Oded

+0

+1 il mio male non l'ho notato, ho appena guardato i tag :) –

3

Definire con l'applicazione e la classe accessin principale lib

ConnectionStrings: Aggiungere using System.Configuration; aggiungi ref: System.Configuration;

ConfigurationManager.ConnectionStrings["key"] 

alternetive

System.Configuration.ConfigurationSettings.AppSettings["key"]) 
+0

questo è solo se la tua stringa di connessione è in "AppSettings", dovrebbe essere nel tag "ConnectionStrings" per il web. file di configurazione – musefan

+1

Perché non utilizzare la sezione 'ConnectionStrings' integrata esposta da' ConfigurationManager'? L'uso di 'AppSettings' per le stringhe di connessione è stato scoraggiato da .NET 2.0. – Oded

5

È necessario aggiungere un riferimento a System.Configuration nel progetto principale.

allora si può accedere stringa di connessione come questo ...

System.Configuration.ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;//<- last bit for a string version of the full connection string 

ConfigurationManager vi permetterà anche di accedere a una serie di altre proprietà utili dal file web.config (questo funziona anche per i file App.config)

0

utilizzare questo all'interno del codice.

String sqlDbConn = 
     ConfigurationManager.ConnectionStrings["ApplicationServices"].ToString(); 

il nome dovrebbe anche defind nella tua web config;

<connectionStrings> 
<add name="ApplicationServices" 
     connectionString="You database information" 
     /> 

</connectionStrings> 

e aggiungere anche utilizzando System.Configuration; namespace

+1

La chiamata 'ToString()' è ridondante. – Oded

Problemi correlati