【问题标题】:ConnectionString from app.config of a DLL is nullDLL 的 app.config 中的 ConnectionString 为空
【发布时间】:2011-04-08 04:47:57
【问题描述】:

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

ConfigurationManager.ConnectionStrings["NAME"].ConnectionString

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

但是,我的 DLL 中的这一行会引发 NullReferenceException。

ConfigurationManager.ConnectionStrings["NAME"].ConnectionString

我该如何解决这个问题?

【问题讨论】:

  • 只有我觉得查克也在这里很有趣吗???

标签: c# asp.net app-config


【解决方案1】:

我有一个类库,其中包含 内的有效连接字符串 应用程序配置

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

【讨论】:

  • 好的,我明白了,谢谢。但是为什么 app.config 是自动生成的呢?
  • @citronas - 它有其他用途(that 项目不知道它在哪里,可能在 other 解决方案中),对库进行单元测试例如。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    如果你不喜欢使用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 中的连接字符串名称。不使用 ConfigurationManager 导入和其他东西。这样做的唯一要求是确保配置文件位于 dll 旁边。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-10
      • 2013-03-19
      • 2015-01-06
      • 2012-01-31
      • 1970-01-01
      • 2010-09-14
      • 2012-08-15
      相关资源
      最近更新 更多