来自DLL的app.config的ConnectionString为null

问题描述 投票:3回答:3

我有一个类库,在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

我该如何解决这个问题?

c# asp.net app-config
3个回答
10
投票

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

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


3
投票

在这种情况下,你在你的网络应用程序的<connectionStrings> entry中放置相同的<add>web.config),ConfigurationManager.ConnectionStrings总是查看当前的配置,这是你的情况下的web.config。


1
投票

如果你不想使用qazxsw poi

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

XElement

其中var xe = XElement.Load("mydll.dll.config"); var connectionString = xe.Descendants("connectionStrings") .Elements("add") .FirstOrDefault(a => a.Attribute("name").Value == Name) .Attribute("connectionString").Value; 是XML中的connectionString名称。不使用Name导入和其他东西。唯一的要求是确保配置文件位于dll旁边。

© www.soinside.com 2019 - 2024. All rights reserved.