2011-07-20 35 views
1

在我的web.config文件我有這樣的代碼:如何從ASP.NET自定義控件訪問web.config?

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    ... 
    <section name="UninstallSurveySettings" type="dashboard.UninstallSurveyConfig" /> 
    </configSections> 
    ... 
    <UninstallSurveySettings> 
    <add key="fileLocation" value="C:\inetpub\wwwroot\output\" /> 
    </UninstallSurveySettings> 
    ... 
</configuration> 

我需要能夠從我的自定義訪問控制這一領域。該控件可以放入任何網站,並需要在UninstallSurveySetting中檢查該網站的web.config文件位置值。

我試過幾種不同的方法,但沒有運氣。任何幫助,將不勝感激。

+0

你嘗試過什麼,爲什麼不工作?這應該與從一個頁面或ASP.Net應用程序的任何其他部分訪問配置沒有什麼不同。 – Justin

+1

不要讓你的控件依賴於配置部分,而是將一個配置對象傳遞給它 - 它將使控件更加可測試以及更少耦合,並使訪問配置成爲調用代碼的責任。 – Oded

+0

請在你如何試圖訪問web.config的這個自定義部分時顯示一些代碼。 –

回答

0

我能夠爲它創造一個配置類,並把這個代碼在web.config中解決這個問題:

<section name="UninstallSurveyConfig" type="dashboard.UninstallSurveyConfig" /> 
.. 

<UninstallSurveyConfig dirFileLocation="C:\inetpub\wwwroot\build\output" webFileLocation="~/output" /> 
0

在ASP.NET MVC 3中,標記不能是直接子對象(它會導致配置錯誤)。

加入您的鑰匙。然後,您可以通過ConfigurationManager.AppSettings集合輕鬆訪問它。

0

使用System.Configuration.ConfigurationManager,你就能得到你想要的東西從web.config

3

更容易使用AppSettings

Web.config文件:

<configuration>  
    <appSettings> 
     <add key="fileLocation" value="C:\inetpub\wwwroot\output\" /> 
    </appSettings>  
</configuration> 

代碼:

string location = System.Configuration.ConfigurationManager.AppSettings["fileLocation"]; 

如果你的部分將變得更加複雜,那麼:

var section = (NameValueFileSectionHandler)ConfigurationManager.GetSection("UninstallSurveySettings"); 
if (section != null) 
{ 
    // access section members 
} 

附:

也許你想使用ConfigurationSection類而不是處理程序。

+0

我寧願使用部分代碼,因爲我實際上將數據輸入到更大的web.config文件中,而且我不想運行衝突的名稱值的機會。假設該部分不爲空,我如何訪問fileLocation字段的值? – Dexter

+0

@Dexter:請張貼您的部分實施。 – abatishchev

+0

我正在使用上面發佈的代碼。 – Dexter

相關問題