来自DLL的app.config中的ConnectionString为null。

4

我有一个包含有效connectionString的app.config的类库。在这个类库中,我想要使用它。

ConfigurationManager.ConnectionStrings["NAME"].ConnectionString

我的ASP.net 4.0框架应用程序引用该DDL并从中检索数据。我想在我的DDL中使用来自App.config的ConnectionString创建Entity Framework 4 DataContext。(我不想在每个单独的方法中传递connectionString,因为我正在使用ObjectDataSources)。但是,我的DLL中的这行代码会抛出NullReferenceException异常。
ConfigurationManager.ConnectionStrings["NAME"].ConnectionString

我该如何解决这个问题?

我是不是唯一一个发现查克也在这里很有趣的人? - Giannis Paraskevopoulos
3个回答

10
我有一个类库,其中包含一个在app.config中有效的connectionString。
类库没有关联app.config文件。使用该程序集的应用程序才有这个文件。因此,您需要将连接字符串放入此配置文件中(如果这是ASP.NET应用程序,则为web.config)。因此,在Visual Studio的类库项目中添加App.config文件没有意义。请注意保留HTML标记。

好的,我明白了,谢谢。但是为什么app.config是自动生成的呢? - citronas
1
@citronas - 它还有其他用途(那个项目不知道它在做什么,可能在其他解决方案中),例如对库进行单元测试。 - Nick Craver

3

2

如果您不想使用ConfigurationManager,可以按照以下方式操作:

假设配置文件名为mydll.dll.config,您可以将其作为XElement加载,并使用Linq解析,如下所示:

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文件放在一起。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接