2011-07-20 12 views
1

私はこのようなコードを持っている:ASP.NETカスタムコントロールからweb.configにアクセスするにはどうすればよいですか?私の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> 

私は私のカスタムコントロールからこのフィールドにアクセスできるようにする必要があります。コントロールはどのWebサイトにもドロップすることができ、UninstallSurveySettingのfileLocation値に対してそのWeb.configの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 
} 

P.S.

ハンドラの代わりにConfigurationSectionクラスを使用したいことがあります。

+0

私は実際にはるかに大きなweb.configファイルにデータを入力しているので、セクションコードを使用する方が好きで、名前の値が競合する可能性はありません。セクションがnullでないと仮定して、fileLocationフィールドの値にどのようにアクセスしますか? – Dexter

+0

@Dexter:セクション実装を投稿してください。 – abatishchev

+0

私は上記のコードを使用しています。 – Dexter

関連する問題