我在app.config
文件中声明了以下连接字符串:
<connectionStrings>
<add name="SqlConnectionString" connectionString="Data Source=xxx.xx.xx.xx;Initial Catalog=xxxxx;User Id=xx;Password=xxx;" providerName="System.Data.SqlClient" />
</connectionStrings>
当我尝试使用以下C#代码段获取此连接字符串时,我得到值null
。我无法获取连接字符串。语法有什么问题吗?
首次尝试:
var settings = ConfigurationManager.ConnectionStrings["SqlConnectionString"];
string result = settings.ConnectionString;
第二次尝试:
string result = ConfigurationSettings.AppSettings["SqlConnectionString"];
答案 0 :(得分:10)
首先,您必须添加appSettings
代码
<connectionStrings>
<appSettings>
<add name="SqlConnectionString" connectionString="Data Source=xxx.xx.xx.xx;Initial Catalog=xxxxx;User Id=xx;Password=xxx;" providerName="System.Data.SqlClient" />
</appSettings>
</connectionStrings>
其次,向您的项目添加对System.Configuration
的引用,并在源代码中插入using System.Configuration
。
然后,您可以使用ConfigurationManager.AppSettings
访问您的配置设置:
string result = ConfigurationSettings.AppSettings["SqlConnectionString"];
答案 1 :(得分:6)
对于非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
答案 2 :(得分:1)
另一个可能的失败原因可能是.NET框架的名称解析不正确。
如果应用程序名称长于8.3名称(例如GreatStuff.exe
),则可能使用其简短的8.3等效名称(在我的示例中为GREATS~1.EXE
)启动,然后.NET将查找只需将app.config
附加到短名称即可.config
个文件。这将失败。
答案 3 :(得分:1)
在VS 2013中编译WinForm应用程序时我注意到了一件事:
我添加连接字符串我的设置文件 - 更新我的app.config文件
我期待的时候:
var connectionString = ConfigurationManager.ConnectionStrings["theConnectionStringName"].ConnectionString;
我必须写:
var connectionString = ConfigurationManager.ConnectionStrings["MyAppNameSpace.Properties.Settings.theConnectionStringName"].ConnectionString;
其他一切照旧
答案 4 :(得分:1)
我这样做是为了获取我的连接字符串“OracleDbContext”......
ConfigurationManager.ConnectionStrings["OracleDbContext"].ConnectionString;
我的web.config看起来像:
<connectionStrings>
<add name="OracleDbContext"
providerName="Oracle.ManagedDataAccess.Client"
connectionString="User Id=oracle_user;
Password=oracle_user_password;
Data Source=oracle" />
</connectionStrings>
答案 5 :(得分:0)
<configuration>
<appSettings>
<add key="ConnectionString" value="blah blah blah"/> </appSettings>
</configuration>
以上配置是否适用于以下API /代码:
string str = ConfigurationSettings.AppSettings["SqlConnectionString"];
答案 6 :(得分:0)
第一种语法绝对有效。
可能的原因是配置文件未在应用程序中正确加载。我想确保它是什么类型的项目。如果是WinForm应用程序或控制台应用程序,则需要在app.config中进行设置。它将被编译为.config并在启动应用程序时加载。如果它是Web应用程序,我担心您无法将该节点添加到app.config,因为它不会被加载。你需要把它放在web.config中。此外,如果要将配置文件中的设置与.net库(DLL)放在一起,则无论如何都不会加载配置文件。配置文件仅遵循主应用程序。
答案 7 :(得分:0)
同样的问题。基于Merlyn Morgan-Graham和Edward Zhu评论,我重建了我的项目,该项目使用app.config创建带有连接字符串的myapp.exe.config文件。原来的第一个语法然后工作。
其他问题:尝试使用项目属性对话框修改连接字符串,并将“project.My.Mysettings。”添加到连接字符串名称。这导致失败。
答案 8 :(得分:0)
还有另一种方法可以为控制台应用程序执行此操作:
<configuration>
<appSettings>
<add key="SqlConString" value="some connection string"/>
</appSettings>
阅读它
using System.Configuration;
然后使用
string CONSTRING;
AppSettingsReader ap = new AppSettingsReader();
CONSTRING = ap.GetValue("SqlConString",typeof(string)).ToString();