2011-10-13 59 views
0

我們有一組WCF服務在IIS中承載。在我們的體系結構中,我們有不同的服務實例,它們在根目錄下的子目錄中託管配置。AppSettings值不在子目錄的web.config中拾取

我在AppSettings部分有一些配置信息的根中有一個Web.Config。具體來說,它看起來像這樣:

<appSettings> 
     <add key="Environment" value="Local" /> 
    </appSettings> 

在不同的子目錄,我添加其他的Web.config它增加了特定於該子目錄中的服務的其他設置。

<appSettings> 
     <add key="Subdir" value="ABC" /> 
</appSettings> 

然而,當我在子目錄調用服務(.SVC)文件,只有一個在ConfigurationManager.AppSettings集(「環境」)值。 「Subdir」鍵無處可查。 (順便說一下,代碼是使用ConfigurationManager編寫的,但我也嘗試過使用WebConfigurationManager,結果是一樣的。)

MSDN上的文檔清楚地表明,嵌套目錄中的Web.config文件應該是累積的。那麼,爲什麼我的「Subdir」鍵在該集合中顯示?

在此先感謝您提供的任何幫助。

回答

1

爲了所有遇到此問題的人的利益,我找到了答案。

儘管此應用程序是在IIS下運行的服務,並且正在通過IIS訪問,但此配置元素所需的位置在System.ServiceModel.ServiceHostFactory的派生類中很深。此時,HttpContext.Current爲空,因此ConfigurationManager無法訪問Web目錄結構信息,並且必須簡單地依賴於頂層的應用程序配置。

所以我們的解決方案是讓每個子目錄都是一個IIS應用程序,並在一個地方給它所有的配置信息。

+0

您應該將自己的答案標記爲正確的答案 - 這將有助於人們確定您在標題中陳述的問題的解決方案。 – Oliver

相關問題