2011-11-25 64 views
4

我試圖獲得對web.config customErrors部分的引用。當我使用下面的代碼時,我總是得到一個空值。我沒有這個問題,當我得到一個我創建的自定義部分的引用,所以我有點傻眼爲什麼這不起作用。獲取對ASP.NET web.config customErrors部分的引用

CustomErrorsSection customErrorSection = 
    ConfigurationManager.GetSection("customErrors") as CustomErrorsSection; 

我也試過這樣:

CustomErrorsSection customErrorSection = 
    WebConfigurationManager.GetSection("customErrors") as CustomErrorsSection; 

我也試過這樣:

CustomErrorsSection customErrorSection = 
    WebConfigurationManager.GetWebApplicationSection("customErrors") as CustomErrorSection; 

編輯:

哎呀!大多數情況下,我都是在問問題後才找出答案的。

這個工作對我來說:

System.Configuration.Configuration configuration = WebConfigurationManager.OpenWebConfiguration("/"); 
CustomErrorsSection customErrorsSection = (CustomErrorsSection)configuration.GetSection("system.web/customErrors"); 

或者更簡單地說是這樣的:

CustomErrorsSection customErrors = (CustomErrorsSection) WebConfigurationManager.OpenWebConfiguration("/").GetSection("system.web/customErrors"); 

這也適用於:

CustomErrorsSection customErrorsSection = ConfigurationManager.GetSection("system.web/customErrors") as CustomErrorsSection; 

所以我想我現在明白爲什麼我有問題擺在首位。我錯誤地認爲我可以通過嘗試GetSection(「customErrors」)獲得對customErrors部分的引用,但是我沒有告訴它它居住的是什麼根節,並且我試圖基於我知道如何當我沒有意識到我的自定義部分是該部分的根目錄時,得到一個自定義部分,所以當我調用GetSection()時,我不必在system.Web /的前面加上前綴。

+0

也許一個愚蠢的問題,但該部分在您的配置文件存在嗎? – Oded

+0

是的部分存在。 –

+1

合法,可以幫助別人。不要刪除它。 – Oded

回答

9

試試這個:

var configuration = WebConfigurationManager.OpenWebConfiguration("~/Web.config"); 

// Get the section. 
CustomErrorsSection customErrors = 
    (CustomErrorsSection)configuration.GetSection("system.web/customErrors"); 

更多關於這個問題在這裏:CustomError Class

+1

謝謝!我花了一段時間搜索了這一點,並在發佈後立即回到微軟頁面,並且發現在我打開頁面的前幾次時我沒有足夠的向下滾動。有時候,你會因爲找到一個答案而感到非常沮喪,以至於無法清楚地解釋你正在尋找的材料。 –

+2

我會將您的答案標記爲正確的,但您的代碼片段僅顯示您鏈接的解決方案的一部分。您沒有粘貼聲明配置來自何處的部分。 –

+0

configuration = WebConfigurationManager.OpenWebConfiguration(「〜/ Web.config」); CustomErrorsSection – Darren

相關問題