来自DLL的app.config的ConnectionString为null

时间:2010-09-04 10:44:50

标签: c# asp.net app-config

我有一个类库,在app.config中包含一个有效的connectionString。在该类库中,我想与

一起使用它
ConfigurationManager.ConnectionStrings["NAME"].ConnectionString

我的ASP.net 4.0框架应用程序引用DDL并从中检索数据。我想在我的DDL中使用App.config中的ConnectionString创建一个Entity Framework 4 DataContext。 (我不想在每个方法中从我的ASP.net应用程序传递connectionString。(我正在使用ObjectDataSources))

但是,我的DLL中的这一行会抛出NullReferenceException。

ConfigurationManager.ConnectionStrings["NAME"].ConnectionString

如何解决此问题?

3 个答案:

答案 0 :(得分:10)

  

我有一个包含a的类库   里面有效的connectionString   的app.config

类库没有关联的app.config文件。这是使用此程序集的应用程序。因此,您需要将连接字符串放在此配置文件中(如果这是一个ASP.NET应用程序,那么这将是web.config)。因此,在Visual Studio中类型类库的项目中添加App.config文件毫无意义。

答案 1 :(得分:3)

在这种情况下,您将相同的<connectionStrings> entry(问题<add>)放入您的网络应用web.configConfigurationManager.ConnectionStrings始终查看当前配置,这是一个网络在你的情况下.config。

答案 2 :(得分:0)

如果您不浪费,请使用ConfigurationManager

如果我假设配置文件为mydll.dll.config,则可以将其加载为XElement并使用Linq as解析它

var xe = XElement.Load("mydll.dll.config");
var connectionString = xe.Descendants("connectionStrings")
     .Elements("add")
     .FirstOrDefault(a => a.Attribute("name").Value == Name)
     .Attribute("connectionString").Value;

其中Name是XML中的connectionString名称。而不使用ConfigurationManager导入和其他内容。确保此配置文件位于dll旁边的唯一要求。