2013-07-10 40 views
5

私はASP.NET MVC4 Web Appプロジェクトを設計しています。私のプロジェクトの根底には、慣習的なデフォルトのWeb.configというファイルがあります。特に、いくつかの要素が定義されています。この実証する例の抜粋として:当然複数のWeb.configファイルからappSettingsにアクセスする

<appSettings> 
    <add key="foo" value="bar" /> 
</appSettings> 

を、Iは、ConfigurationManager.AppSettings["foo"]を使用してコード内のこの要素にアクセスすることができます。これは私にとって完璧に機能します。しかし、私はプロジェクトの横にNuGetパッケージを作成しています。パッケージは、自分のプロジェクトのAreasディレクトリの下にある独自のディレクトリにインストールされます。ここでは、私のパッケージのルートに、別のファイルWeb.configがあります。これは、別のユーザーがNuGetパッケージをインポートすると、パッケージリソースの構成がパッケージ固有のものになるためです。ただ、相対パスの観点から明確にする

<appSettings> 
    <add key="dirEnabled" value="true" /> 
</appSettings> 

、私は今、2つのweb.configファイル、./Web.configで1と./Areas/PackageName/Web.config 1つを持っている:パッケージのWeb.configは、以下が含まれてみましょう。

パッケージ内で、dirEnabledの値を取得したいとします。これを行うには、ConfigurationManager.AppSettings["dirEnabled"]に電話します。ただし、これはエラーをスローします。あたかもパッケージ設定ファイルではなく、./Web.configからappSettingsのコレクションだけが取得されているように見えます。 プロジェクトのルート設定ファイルではなく、パッケージの設定ファイルからappSettingsコレクションを取得することは可能ですか?

+0

も答えをhttp://stackoverflow.com/questions/11351106/multiple-appsettings-files-is-it-possible –

答えて

7

で試してみてください、それを考え出しました!別の設定ファイルを使用するには、WebConfigurationmanagerを組み込みます。だから、./Areas/PackageName/Web.configののappSettingsにアクセスするには、単に使用します。

var config = WebConfigurationManager.OpenWebConfiguration("~/Areas/PackageName"); 
string dirE = config.AppSettings.Settings["dirEnabled"].Value; 
2

プロジェクトのWeb.configで

<appSettings file="<Path_To_Second_Web.Config>"> 
    ... 
</appSettings > 

http://msdn.microsoft.com/en-us/library/aa903313(v=vs.71).aspx

+0

感謝を参照してください!しかし、まだ値を見つけることができないことを示すエラーを投げています。 – mattkgross

+0

ここに何かがあります。 http://msdn.microsoft.com/en-us/library/aa903313(v=vs.71).aspx –

関連する問題