无法从类库中读取App.config值

时间:2012-10-24 09:01:46

标签: c# asp.net

这可能是一个简单的问题,但我很难解决。

我的Web应用程序中包含以下值的Web.config

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

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

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

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

我的类库(Lib)中有以下代码。当我在我的Web应用程序中为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
        }
    }
}

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

注意:由于我的Lib是可插拔组件,因此消费者可以更改自己的FullName。我无法将值Web.confingApp.config合并。

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

简短的回答是:你做不到。使用您图书馆的应用程序不会关注您的app.config。您可以使用settings文件,也可以更长时间地使用,抽象出配置管理器,并以编程方式将app.config读取为应用程序输出目录中的XML文件,以包含其设置。可以理解,这两种选择都不理想。

答案 2 :(得分:0)

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