2

我有一个 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 添加到我的类库项目中。我不确定哪一个是可行的。

4

6 回答 6

5

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

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

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

于 2013-06-26T00:48:37.643 回答
3

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

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

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

于 2013-06-26T00:50:35.907 回答
1

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

string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
于 2015-09-12T08:00:32.947 回答
1

我有一个类似的问题,结果是我需要将 System.Configuration 添加到引用中。

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

于 2016-12-14T17:02:58.277 回答
0

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

于 2013-06-26T03:13:49.117 回答
0

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

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

于 2013-06-26T12:59:57.367 回答