我在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添加到我的类库项目中。我不确定哪一个是可行的。
答案 0 :(得分:5)
如果您使用类库运行 Web 项目, 在 Web 项目
中添加连接字符串web.config
如果您正在使用类库运行 Console / WinForm 项目, 在控制台/ WinForm 项目
中添加连接字符串app.config
修改库项目中的配置将不适用于您的情况。
答案 1 :(得分:2)
据我所知,你有一个带有连接字符串配置文件的类库,并在另一个应用程序中引用该库。问题是app.config(或web.config)是相对于正在执行的应用程序。
假设您的类库名为Shared.dll并且具有Shared.dll.config和另一个名为Application with Application.exe.config的应用程序(假设它是一个控制台应用程序)。运行该应用程序时,使用的app.config将是Application.exe.config。
如果您尝试在此应用程序中尝试访问名为TRN_DB
的连接字符串,它将在应用程序的配置文件中查找未定义的连接字符串并返回null(因此引用异常)。
答案 2 :(得分:1)
在Windows窗体应用程序中,总是在引用中添加对System.Configuration的引用,然后在代码页中添加using System.Configuration
,然后使用这样的连接字符串:
string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
答案 3 :(得分:1)
我遇到了类似的问题,问题是我需要将System.Configuration添加到References。
我想用System.Configuration添加;该类可以解决问题,但我必须在引用之前将System.Configuration添加到引用中。
答案 4 :(得分:0)
连接字符串的东西需要在主exe项目的app.config中,否则你需要手动加载它。
答案 5 :(得分:0)
正如其他人所说,库将使用配置文件来执行应用程序。
我想添加一个建议。一个选项需要考虑,因为(在我看来)有点夸张和专业的触摸是创建一个自定义配置部分。这样您就可以对图书馆的设置进行分组,而不会对图书馆使用的设置产生任何疑问:http://msdn.microsoft.com/en-us/library/2tw134k3(v=vs.100).aspx