【问题标题】:Add connectionstring in app.config在 app.config 中添加连接字符串
【发布时间】:2013-06-22 23:39:33
【问题描述】:

我有一个 C# 类库,有几个类和一个 app.config。我已将 ConnectionString 放入 app.config 中,如下所示:

<connectionStrings>
    <add name="TRN_DB"
         connectionString="Database=TRN;Server=NDTSSN;User ID=ln_users2;Password=%4nu$r!;Connection Timeout=30;pooling=false;" 
         providerName="System.Data.SqlClient"
    />
</connectionStrings>

我尝试在我的项目中的一个类中打开连接字符串,如下所示:

     string connectionString = ConfigurationManager.ConnectionStrings["TRN_DB"].ConnectionString.ToString();
       SqlConnection con = new SqlConnection(connectionString);
       con.Open();

但它给了我一个错误:

{"对象引用未设置为对象的实例。"}

当我在 web.config 中的 web 项目中使用相同的方式时,连接字符串是正确的,有人知道我如何在 app.config 中访问它吗?我也已经用这种方式了:

 string connectionString = System.Configuration.ConfigurationSettings.AppSettings["TRN_DB"];

这个给我这个错误:

此方法已过时,已被 System.Configuration!System.Configuration.ConfigurationManager.Appsettings 取代

为了清楚起见,我的解决方案中没有任何其他项目,因为我希望我的类库能够独立工作。我无法将 web 项目和 web.config 应用到那个。所以我要么应该将连接字符串添加到 app.config 并访问它,要么将 web.config 添加到我的类库项目中。我不确定哪个是可行的。

【问题讨论】:

  • 您在哪一行得到 NullReferenceException?
  • 等等,如果这只是一个类库,你是如何运行程序来得到那个错误的?如果您从另一个应用程序引用了该库,则需要将连接字符串放在该应用程序的配置文件中。
  • 我正在使用简单的 windows 窗体对其进行测试,但我应该只将类库交给另一个程序员,所以我必须将连接字符串放在哪里?
  • 我想我可以在我的类库项目中的一个单独的类中输出它,不是吗?
  • 欢迎来到 Stack Overflow!几乎所有NullReferenceException 的情况都是一样的。请参阅“What is a NullReferenceException in .NET?”获取一些提示。

标签: c# class-library


【解决方案1】:

如果您正在使用类库运行 Web 项目, 将连接字符串添加到 Web 项目中的web.config

如果您正在使用类库运行 Console/WinForm 项目, 将连接字符串添加到 Console/WinForm 项目中的app.config

在库项目中修改配置不适用于您的情况。

【讨论】:

    【解决方案2】:

    据我了解,您有一个类库,其中包含一个带有连接字符串的配置文件,并且正在另一个应用程序中引用该库。问题是 app.config(或 web.config)与正在执行的应用程序相关。

    假设您的类库名为 Shared.dll,并且有一个 Shared.dll.config 和另一个应用程序(假设它是一个控制台应用程序),名为 Application 和 Application.exe.config。运行该应用程序时,使用的 app.config 将是 Application.exe.config。

    如果您尝试在此应用程序中访问名为 TRN_DB 的连接字符串,它将在应用程序的配置文件中查找未定义的位置并返回 null(因此出现引用异常)。

    【讨论】:

    • Oh ok 那我想这不可能,我应该创建一个 web 项目并将连接字符串放在 web.cofig 中。
    【解决方案3】:

    在 Windows 窗体应用程序中,始终在 References 中添加对 System.Configuration 的引用,然后在代码页中添加 using System.Configuration,然后使用如下连接字符串:

    string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
    

    【讨论】:

      【解决方案4】:

      我遇到了类似的问题,结果证明我需要将 System.Configuration 添加到引用中。

      我想使用 System.Configuration 添加;到类就可以了,但我必须先将 System.Configuration 添加到引用中才能起作用。

      【讨论】:

        【解决方案5】:

        连接字符串的东西需要在主exe项目的app.config中,否则你需要手动加载它。

        【讨论】:

          【解决方案6】:

          正如其他人所说,该库将使用配置文件来执行应用程序。

          不过,我想添加一个建议。要考虑的一个选项(在我看来)有点润色和专业的感觉是创建一个自定义配置部分。这将允许您对库的设置进行分组,而不会对您的库使用哪些设置产生任何混淆:http://msdn.microsoft.com/en-us/library/2tw134k3(v=vs.100).aspx

          【讨论】:

            猜你喜欢
            • 2016-02-10
            • 2016-04-05
            • 2012-07-23
            • 2013-02-01
            • 1970-01-01
            • 1970-01-01
            • 2023-04-04
            • 2010-09-06
            • 2013-03-04
            相关资源
            最近更新 更多