入れ子になった ASP.NET アプリケーションを動作させる!

Web サイトを作成し、2 つの一般的な ASP.NET アプリケーションを使用しようとしたことはありますか。

そのとき、次のようなエラーが表示されませんでしたか。

私の場合は表示されました。

BlogEngine.net (英語) を c:\inetpub\wwwroot に作成したのですが、これは正常に動作しました。

その後、ScrewTurnWiki (英語) を c:\inetpub\wwwroot\wiki に配置しました。

ScrewTurnWiki はごく簡単にインストールできるアプリケーションで、それまで動作しないことはありませんでした。ところが、今回は正常にインストールできなかったのです (ただし、後で説明しますが、問題の原因は ASP.NET とアプリケーションにあります)。

Wiki を読み込むときに表示されたエラー メッセージによると、BlogEngine.net アセンブリを解決できなかったようです。

問題の原因はここにあります。

ASP.NET アプリケーションは、独特の完全な構成階層に基づいています。この階層構造は、何か利用目的がある場合は便利ですが、そうでない場合は単なる厄介物になってしまいます。

下位ディレクトリにあるアプリケーションはルートアプリケーションのエントリを継承します。そうしたエントリには、拡張機能、ハンドラ、プロバイダなどがあります。

解決方法は少し込み入っています。下位のアプリケーション (Wiki) に階層の上位で行われた変更を無視するように指示できるのではないかと考えがちですが、それはできません。

ルートアプリケーションに対し、構成情報を下位アプリケーションへ送らないように指示する必要があります。

そのコードは次のようになります。

<configuration>
<configSections>
...
     </configSections>
<location path="." inheritInChildApplications ="false">
... rest of config
</location>
</configuration>

データを提供してくれた NikhilClint に感謝します。

投稿 : 2008 年 4 月 2 日 03:40 JoeStagner

Joe Stagner - https://www.misfitgeek.com/MakingNestedASPNETApplicationsWork.aspx (英語) より