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

mah*_*esh 7 c# app-config visual-studio-2010

我在我的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>
Run Code Online (Sandbox Code Playgroud)

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

第一次尝试:

var settings = ConfigurationManager.ConnectionStrings["SqlConnectionString"];
string result = settings.ConnectionString;
Run Code Online (Sandbox Code Playgroud)

第二次尝试:

string result = ConfigurationSettings.AppSettings["SqlConnectionString"];
Run Code Online (Sandbox Code Playgroud)

she*_*bin 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>
Run Code Online (Sandbox Code Playgroud)

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

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

string result = ConfigurationSettings.AppSettings["SqlConnectionString"];
Run Code Online (Sandbox Code Playgroud)

  • 我在Visual Studio 2008中尝试此操作并收到"ConnectionString具有无效的子元素"appSettings的错误 (2认同)

Ric*_*kNZ 6

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

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

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

ExeConfig().ConnectionStrings.ConnectionStrings[s].ConnectionString
Run Code Online (Sandbox Code Playgroud)