Bağlantı dizesini App.config'den alın


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

Ve bu benim App.config dosyam:

<?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>

Ama benim projem çalışırken bu benim hatam:

Nesne referansı bir nesnenin örneğine atanmadı.


5
Bu App.config dosyasını nereye koydunuz? Çalıştırdığınız uygulama projesi ya da belki bazı dll? Önce ihtiyacın
abatishchev

3
System.Configuration.dll dosyasına bir başvuru eklediğinizde System.Configuration.ConfigurationManager'ı kullanabilmeniz gerekir.
daszarrin

Bağlantı dizenizde bir yazım hatası var. "Entegre" ve "Güvenlik" arasında bir boşluğa ihtiyacınız var
Onur Omer

@OnurOmer - soru alanı içerecek şekilde güncellendi ("IntegratedSecurity" yerine "Entegre Güvenlik")
SlimsGhost

Yanıtlar:


484

Sadece aşağıdakileri yapamaz mısın:

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

Montajınızın ayrıca System.Configuration.dll


14
Bunun bir C # sorusu olduğunu biliyorum, ancak bu google arama sonuçlarının en üstünde olduğu için, bunu System.Configuration.ConfigurationManager.ConnectionStrings("Test").ConnectionString
VB'de

296

Bu çok yaygın bir soru olduğundan, Visual Studio'dan 4 basit adımda takip etmeyi kolaylaştırmak için bazı ekran görüntüleri hazırladım.

bağlantı dizesini app.config'den alın


22
Bu yanıtı seviyorum. Varsayılan olarak VS (VS2012 Ultimate) sürümümde bu kütüphane dahil değildir, ancak using System.Configurationyine de çalışır
David Colwell

3
Gerçekten referans eklemek HAD veya kullanımı altı çizili değildi ama hala ConfigurationManager bilinmiyor. Teşekkürler!
CodingYourLife

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

1
App.config bir projeye bağlantı olarak eklenirse ne olur?
FrenkyB

2
Bu yalnızca bağlantı dizeniz bir uygulama ayarı ise çalışır <connectionStrings>, app.config'den (OP'nin istediği şeydir!) Öğeler alındığında işe yaramaz .
BrainSlugs83

31

Ayrıca System.Configurationreferanslara dll eklediğinizden emin olun . Bu olmadan ConfigurationManager, System.Configuration ad alanındaki sınıfa erişemezsiniz .


22

Önce System.ConfigurationSayfanıza bir referans ekleyin .

using System.Configuration;

Sonra app.config göre bağlantı dizesini aşağıdaki gibi alın.

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

İşte şimdi bağlantı dizeniz elinizde ve kullanabilirsiniz.


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

Bunu dene

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

3

1) Yeni bir form oluşturun ve ekleyin:

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

bağlantıyı kullanmak istediğinizde bunu ur formunda yapın:

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

ve bu kadar. DB'ye bağlanacaksınız ve bir şeyler yapabilirsiniz.

Bu vb.net içindir ama mantık aynıdır.


3

Denedin mi:

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

3

Aynı sorunu yaşadım. benim çözümüm iki projeden oluştu. A Class libraryve sınıf kütüphanesi projesine referans veren bir web sitesi. sorun ben App.configbenim Class libraryprojede erişmeye çalışıyordu ama sistem Web.configweb sitesinde arıyor oldu . Bağlantı dizesini içeri koydum Web.configve ... problem çözüldü!

Bunun ana nedeni, ConfigurationManagerbaşka bir montajda kullanılmasına rağmen runnig projesinin içinde arama yapmasıydı.


3

Bağlantı dizesini almak için bu yöntemi kullanabilirsiniz

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

Önce System.Configurationprojenize referans eklemeniz ve ardından bağlantı dizesini almak için aşağıdaki kodu kullanmanız gerekir.

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

2

Bu benim için çalıştı:

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

Çıktılar:

Veri Kaynağı = .; İlk Katalog = OmidPayamak; IntegratedSecurity = True "


1

Aşağıdaki kod satırını kullanarak bağlantı dizesini alabilirsiniz -

using System; using System.Configuration;

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

İşte bir başvuru: App.config'den Bağlantı Dizesi


2
Ben u dedi aynı yaptım ama ben alıyorum aynı null referans hatası.
Enigmatic Mind

1

Sorun referansla ilgili değil gibi görünüyor, connectionstring değerini null olarak alıyorsunuz, bu yüzden lütfen çalıştırdığınız projenin yapılandırmasına değeri eklediğinizden emin olun, yani ilk başlatılan / çalıştırılan ana program / kütüphane anlamına gelir.


1

Bu soruda OP bir dll içinde bir App.Config kullanmaya çalışıyor olabilir.

Bu durumda, kod aslında yürütülebilir dll değil App.Config erişmeye çalışıyor. Ad bulunamadığından, bir Null döndürülür, dolayısıyla istisna gösterilir.

Aşağıdaki yazı yardımcı olabilir: DLL'nin app.config dosyasından ConnectionString boş


0

System.ConfigurationKütüphaneye başvurdum ve aynı hatayla karşılaştım. Hata ayıklama dosyaları app.config dosyalarına sahip değildi, bu dosyayı el ile oluşturun. Hata, bu hata ayıklama klasöründe "appname.exe.config" dosyasını kopyalayarak çözdü. IDE dosyayı yaratmadı.


0

Dize okumak ve tek tek kontrol dizin kullanarak sorunu çözdü. Adı kullanarak okuma hala aynı hatayı veriyor.
Bir C # pencere uygulaması geliştirdiğimde sorun var, benim asp.net uygulamasında sorun yoktu. Ortamda doğru olmayan bir şey olmalı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.