2012-10-24 44 views
4

這可能是一個簡單的問題,但我正在努力解決。無法讀取類庫中的App.config值

我在我的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 
     } 
    } 
} 

的問題是如何從App.config這是類庫(庫)讀取FullName

注意:由於我的Lib是可插拔組件,所以消費者可以改變他們自己的FullName。我無法將App.config中的值合併到Web.confing

回答

5

您必須合併兩個配置節並將所有設置放在應用程序的主配置文件中。在網絡應用的情況下,它將是web.config

+0

我無法合併兩個(Web.confing&App.config)。因爲類庫是可插入的組件。 –

+0

你必須。你插入你的DLL,但你合併你的設置。可以擁有單獨的配置文件,但這需要額外的代碼來讀取這些單獨的文件。 –

+0

+1最後的評論 - 悲傷,但真實; –

3

簡短的回答是:你不能。使用您的圖書館的應用程序將不會注意您的app.config。您可以使用settings文件,也可以採用更長的路徑,抽象出配置管理器並使其以編程方式讀取應用程序輸出目錄中的XML文件app.config以包含其設置。可以理解的是,兩種選擇都不是理想的。

+0

我希望這個答案是關於應用程序配置文件的MSDN頁面上的第一段...: -/ – EvilDr

+0

也許這將是如果你提供他們...一個BIIIILLION DOOLLAAARRRSS –

0

雖然我不經常使用網絡應用程序,但在我的桌面應用程序中,我經常遇到類似的問題。我一直在使用Daniel Hilgarth https://stackoverflow.com/a/6151688/2212458提供的代碼來暫時切換配置文件。插件加載器可以插入插件配置文件,然後恢復它自己的。