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