从c#中的appconfig文件中获取连接字符串

我在app.config文件中声明了以下连接字符串:

     

当我尝试使用以下C#代码片段获取此连接字符串时,我得到值null 。 我无法获取连接字符串。 语法有什么问题吗?

第一次尝试:

 var settings = ConfigurationManager.ConnectionStrings["SqlConnectionString"]; string result = settings.ConnectionString; 

第二次尝试:

 string result = ConfigurationSettings.AppSettings["SqlConnectionString"]; 

对于非Web项目,并且在OP中设置app.config,这是我通常所做的,因为配置文件在编译应用程序时更改名称(到yourapp.exe.config):

  public static Configuration ExeConfig() { Assembly service = Assembly.GetAssembly(typeof(YourClass)); return ConfigurationManager.OpenExeConfiguration(service.Location); } 

然后引用第s个连接字符串:

 ExeConfig().ConnectionStrings.ConnectionStrings[s].ConnectionString 

首先,您必须添加appSettings标记

       

其次,向项目添加对System.Configuration的引用,并在源中插入using System.Configuration

然后,您可以使用ConfigurationManager.AppSettings来访问您的配置设置:

 string result = ConfigurationSettings.AppSettings["SqlConnectionString"]; 

我遇到了同样的问题,但经过大量研究后,我发现代码抛出空引用exception的原因是因为如果使用connectionString名称,它将返回null并且当您尝试调用ToString()或者ConfigurationManager.ConnectionStrings属性的ConnectionString属性,即抛出exception时的属性
返回正确的连接字符串,您必须使用以下代码索引到ConnectionStringSettings。

 ConnectionStringSettings conSettings = ConfigurationManager.ConnectionStrings[/* index */]; string conString = conSettings.ConnectionString; 

另一个可能的失败原因可能是.NET框架的名称解析不正确。

如果应用程序名称长于8.3名称(例如GreatStuff.exe ),则可能使用其简短的8.3等效名称(在我的示例中为GREATS~1.EXE )启动,然后.NET将通过以下方式查找app.config文件:只需将.config附加到短名称即可。 这将失败。

在VS 2013中编译WinForm应用程序时我注意到的一件事:

我添加了连接字符串我的设置文件 – 它更新了我的app.config文件

当我期待:

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

我要写:

 var connectionString = ConfigurationManager.ConnectionStrings["MyAppNameSpace.Properties.Settings.theConnectionStringName"].ConnectionString; 

其他一切都像往常一样

我这样做是为了获取我的连接字符串“OracleDbContext”…

 ConfigurationManager.ConnectionStrings["OracleDbContext"].ConnectionString; 

我的web.config看起来像:

     
      

以上配置是否适用于以下API /代码:

 string str = ConfigurationSettings.AppSettings["SqlConnectionString"]; 

第一种语法绝对有效。

可能的原因是配置文件未在应用程序中正确加载。 我想确保它是什么类型的项目。 如果是WinForm应用程序或控制台应用程序,则需要在app.config中进行设置。 它将被编译为.config并在应用程序启动时加载。 如果它是Web应用程序,我担心您无法将该节点添加到app.config,因为它不会被加载。 你需要把它放在web.config中。 此外,如果要将配置文件中的设置放在.net库(DLL)中,则无论如何都不会加载配置文件。 配置文件仅遵循主应用程序。

同样的问题。 基于Merlyn Morgan-Graham和Edward Zhu评论,我重建了我的项目,该项目使用app.config创建带有连接字符串的myapp.exe.config文件。 原来的第一个语法然后工作

其他问题:尝试使用项目属性对话框修改连接字符串,并将“project.My.Mysettings。”添加到连接字符串名称。这导致失败。

还有另一种方法来为控制台应用程序执行此操作:

      

阅读它

 using System.Configuration; 

然后使用

 string CONSTRING; AppSettingsReader ap = new AppSettingsReader(); CONSTRING = ap.GetValue("SqlConString",typeof(string)).ToString();