4

この質問はかなり聞かれているようですが、実際に問題を解決するものはありません。領域を持つ ASP.NET MVC4 アプリケーションがあります。この領域内には、オーバーライドされた appsettings を含む web.config があります。これらの設定は、エリア内のコントローラーで読み取ろうとしたときに取得されないようです。

-MyApp
    -Areas
        -MyArea
            -Controllers
                -MyController
            -Web.config
    -Web.config

MyApp\Web.configが持っている:

<appSettings>
    <add key="DefaultDisplayMode" value="Configuration" />
</appSettings>

MyApp\Areas\MyArea\Web.configが持っている:

<appSettings>
    <add key="DefaultDisplayMode" value="Review" />
    <add key="SubSetting" value="Testing" />
</appSettings>

MyControllerアプリの設定を照会すると、次のように表示されます。

DefaultDisplayMode: Configuration

私は見ることを期待しています:

DefaultDisplayMode: Review
SubSetting: Testing

私は両方で試しました:

System.Configuration.ConfigurationManager.AppSettings["..."]
System.Web.Configuration.WebConfigurationManager.AppSettings["..."]

私は運がない次の(オーバーザトップ)構造で試しました:

-MyApp
    -Areas
        -MyArea
            -Controllers
                -MyController
                -Web.config
            -Web.config
    -Web.config

サブディレクトリの appSettings が機能しない理由を誰か知っていますか?

4

1 に答える 1

2

IIS は、ルーティングされた要求が実行するコードではなく、URL に基づいて web.config を読み込みます。

必要なルートを模倣する空のフォルダー構造を作成し、そこに構成ファイルを追加できます。それが機能しない場合は<location>、メイン構成ファイルでタグを使用できますが、場所タグのパスもコードではなく URL と一致する必要があります。

于 2013-02-19T17:02:37.697 に答える