【问题标题】:Unable read App.config values from Class Library无法从类库中读取 App.config 值
【发布时间】:2012-10-14 07:13:14
【问题描述】:

这可能是一个简单的问题,但我正在努力解决。

我的 Web 应用程序中有 Web.config 和以下值。

<appSettings>
    <add key ="FirstName" value ="Prasad"/>
    <add key ="LastName" value ="Kanaparthi"/>
</appSettings>

我的类库 (Say Lib) 中有 App.config 和以下值。

<appSettings>
    <add key ="FullName" value ="Prasad Kanaparthi"/>
</appSettings>

类库(Lib) 是可插拔组件,我在我的Web 应用程序中添加了类库(Lib) 引用。

我的类库 (Lib) 中有以下代码。当我在我的网络应用程序中为GetAppSettings 创建实例时,我可以看到以下响应。

namespace Lib
{
    public class GetAppSettings
    {
        public GetAppSettings()
        {
            var FirstName = ConfigurationManager.AppSettings["FirstName"];  // O/P : Prasad
            var MiddleName = ConfigurationManager.AppSettings["LastName"];  // O/P : Kanaparthi

            var FullName = ConfigurationManager.AppSettings["FullName"];    // O/P : null
        }
    }
}

问题是我如何从App.config 中读取FullName,这是类库(Lib)。

注意:由于我的Lib是可插拔组件,所以消费者可以自行更改FullName。我无法将值从 App.config 合并到 Web.confing

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    虽然我不经常使用 Web 应用程序,但在我的桌面应用程序中,我经常遇到类似的问题。我一直在使用 Daniel Hilgarth https://stackoverflow.com/a/6151688/2212458 提供的代码来临时切换配置文件。插件加载器可以拉入插件配置文件,然后恢复自己的。

    【讨论】:

      【解决方案2】:

      简短的回答是:你不能。使用您的库的应用程序不会关注您的app.config。您可以改用settings 文件,或者更进一步,抽象出配置管理器并让它以编程方式将您的app.config 作为XML 文件读取到应用程序的输出目录中,以包含其设置。可以理解,这两种选择都不理想。

      【讨论】:

      • 我希望这个答案是 MSDN 页面上关于应用程序配置文件的第一段... :-/
      • 如果你提供给他们也许会是……一个 BIIIILLION DOOLLAAAARRRSS
      【解决方案3】:

      您必须合并两个配置部分并将所有设置放在应用程序的主配置文件中。如果是网络应用程序,它将是web.config

      【讨论】:

      • 我无法合并两者(Web.confing 和 App.config)。因为类库是可插拔组件。
      • 你必须这样做。你插入你的 dll,但你合并你的设置。可以有单独的配置文件,但这需要额外的代码来读取这些单独的文件。
      • connectionString 的情况类似。我不得不将它从类库 App.config 中删除,并将其添加到我的主项目的 web.config 中。 +1
      猜你喜欢
      • 2018-07-30
      • 2018-12-27
      • 1970-01-01
      • 2012-04-09
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2011-07-30
      • 2018-03-10
      相关资源
      最近更新 更多