Получить строку подключения из App.config

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

И это мой App.config:

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

Но когда мой проект запускается, это моя ошибка:

В экземпляре объекта не задана ссылка на объект.

22 ответа

Не могли бы вы просто сделать следующее:

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

Ваша сборка также нуждается в ссылке на System.Configuration.dll

Поскольку это очень распространенный вопрос, я подготовил несколько снимков экрана из Visual Studio, чтобы упростить их выполнение в 4 простых шага.

получить подключением из app.config

string str = Properties.Settings.Default.myConnectionString; 

Также убедитесь, что вы включили System.Configuration dll по вашим ссылкам. Без этого у вас не будет доступа к ConfigurationManager класс в пространстве имен System.Configuration.

Сначала добавьте ссылку на System.Configuration на вашу страницу.

using System.Configuration;

Затем в соответствии с вашим app.config получите строку подключения следующим образом.

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

Вот и все, теперь у вас есть строка подключения в вашей руке, и вы можете использовать ее.

//Get Connection from web.config file
public static OdbcConnection getConnection()
{
    OdbcConnection con = new OdbcConnection();
    con.ConnectionString = System.Configuration.ConfigurationManager.ConnectionStrings["con"].ConnectionString;
    return con;     
}

Попробуйте это

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

Это сработало для меня:

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

Выходы:

Источник данных =; Исходный каталог =OmidPayamak;IntegratedSecurity=True"

Ты пытался:

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

Я была такая же проблема. Мое решение было построено из двух проектов. Class library и веб-сайт, ссылающийся на проект библиотеки классов. проблема заключалась в том, что я пытался получить доступ к App.config в моем Class library проект, но система искала в Web.config веб-сайта. Я положил строку подключения внутри Web.config и... проблема решена!

Основной причиной было то, что несмотря на ConfigurationManager был использован в другой сборке, которую он искал в проекте runnig.

1) Создайте новую форму и добавьте это:

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

затем, когда вы хотите использовать соединение, сделайте это в форме ur:

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

и это все. Вы будете подключены к БД и можете делать вещи.

Это для vb.net, но логика та же.

Вполне возможно, что ОП в этом вопросе пытается использовать App.Config в DLL.

В этом случае код фактически пытается получить доступ к App.Config исполняемого файла, а не к DLL. Поскольку имя не найдено, возвращается значение Null, поэтому показано исключение.

Следующий пост может быть полезным: ConnectionString из app.config библиотеки DLL имеет значение null

В приведенных выше ответах не уточняется, откуда берется значение в индексе connectionStrings.

Как упоминалось выше, чтобы получить строку подключения, вы говорите:

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

Чтобы использовать правильное значение, перейдите к вашим основным проектам web.config файл и найдите следующий фрагмент кода:

      <connectionStrings>
    <add name="Authentication" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;Initial Catalog=Authentication;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\Authentication.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>

Где это говорит name= , текст в этих продолжающихся кавычках является значением XXXвы используете в приведенном выше коде. В моем примере выше это оказалось Authentication

string sTemp = System.Configuration.ConfigurationManager.ConnectionStrings["myDB In app.config"].ConnectionString;

Сначала вы должны добавить System.Configuration ссылка на ваш проект, а затем используйте код ниже, чтобы получить строку подключения.

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

Кажется, что проблема не в ссылке, вы получаете строку соединения как ноль, поэтому, пожалуйста, убедитесь, что вы добавили значение в файл конфигурации вашего работающего проекта, то есть основная программа / библиотека, которая запускается / запускается первой.

Вы можете использовать этот метод для получения строки подключения

using System; 
using System.Configuration;

private string GetConnectionString()
{
    return ConfigurationManager.ConnectionStrings["MyContext"].ConnectionString;
}

Обнаружил эту проблему при размещении в конструкторе UserControl , и ни одно из решений здесь не помогло мне.

После некоторых исследований кажется, что ConfigurationManager.ConnectionStrings будет иметь значение null при попытке доступа к нему из.

И из этого поста я придумал следующий код для обнаружения DesignTime как обходной путь к проблеме:

      public class MyUserControl : UserControl 
{
    ....
    public MyUserControl ()
    {
        InitializeComponent();

        bool designMode = (LicenseManager.UsageMode == LicenseUsageMode.Designtime);
        if (!designMode)
        {
            this.connectionString = 
                ConfigurationManager.ConnectionStrings["xxx"].ConnectionString;
        }
    }
}

Я ссылался System.Configuration библиотека и у меня такая же ошибка. Файлы отладки не имели своего app.config, создайте вручную этот файл. Ошибка в том, что я решил эту проблему, скопировав файл "appname.exe.config" в папку отладки. В IDE не был создан файл.

Вы можете получить строку подключения, используя строку кода ниже -

using System; using System.Configuration;

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

Вот ссылка: Строка соединения из App.config

Я решил проблему, используя индекс для чтения строки и проверяя одну за другой. Чтение с использованием имени по-прежнему дает ту же ошибку.
У меня проблема при разработке приложения для окна C#, у меня не было проблемы в моем приложении asp.net. В настройках должно быть что-то, что не правильно.

Чтобы прочитать строку подключения из app.cfg (в приложении службы Windows), у меня работал приведенный ниже код.

       var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    var connectionStringsSection = (ConnectionStringsSection)config.GetSection("connectionStrings");
    connectionStringsSection.ConnectionStrings["CONNECTIONSTR"].ConnectionString = @"New Connection String";
Другие вопросы по тегам