2014-10-28 36 views
0

我有一個調用DLL的WCF服務。該服務有一個web.config並且該DLL有一個app.config。我寫了一個自定義應用程序配置部分,感謝DLL的this question。但是,在我撥打ConfigurationManager.GetSection("...")的DLL時,它會嘗試從服務的web.config中讀取數據。如何從具有web.config的服務調用它時讀取DLL自己的app.config?

如何設置它,以便DLL從服務器讀取它的web.config時讀取它的app.config?我的DLL調試我的服務,我的DLL被複制到一個奇怪的臨時文件夾(C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files \ root \ f4d2cdd1 \ a59eb1c1 \ assembly \ dl3 \ 7c7f438f \ b42518b4_f8f2cf01)但我的DLL的配置沒有。如果我手動複製配置,我可以使用OpenMappedExeConfiguration來閱讀它。即使存在app.config,定期調用ConfigurationManager仍會繼續讀取web.config。

我無法將配置設置從app.config移動到web.config,因爲此WCF服務和REST服務之間共享該DLL。我希望他們來到一個提供核心功能的DLL。 DLL應該讀取它自己的配置文件,而不是web.configs中的任何一個,這樣就沒有一個服務獲得與另一個服務不同的值的機會。

+1

爲什麼不把自定義部分添加到Web服務的web.config中? app.config和web.config基本相同。這完全取決於上下文。在Web上下文(網站,Web應用程序,Web服務)中運行時,將從web.config中讀取設置。類庫,控制檯應用程序(僅舉幾例)使用app.config文件。 – HaukurHaf 2014-10-28 21:08:51

+0

簡單的方法當然是將相關信息添加到'web.config'中。有沒有一個特定的原因,你不能這樣做? (AFAIK,有沒有簡單的方法來做你在問什麼,除非DLL是你的,你可以定製代碼) – flindeberg 2014-10-28 21:08:54

+0

DLL和服務都是我的。我可以操縱任何一個。我非常想避免將配置細節放​​在服務的配置中。 – 2014-10-28 21:10:29

回答

0

如果調用來自Web服務或任何運行Web服務器(如IIS)的內容,那麼它將只從web.config中讀取。如果您正在運行控制檯應用程序或任何未在Web服務器上運行的應用程序,那麼將使用app.config。