CMS の一部として、実際のファイル構造の代わりに単一のファイルを提供するように設計されたカスタム VirtualPathProvider を作成しました。ファイルが実際にサーバー上に存在する場合、そのファイルが提供されるように設定しました。ファイルが存在しない場合は、そのアドレスに保存されている仮想コンテンツが代わりに提供されます。これは、データベースに保存されたファイルから Web サイトを提供する概念に似ていますが、この場合、コンテンツはサーバー上の XML ファイルに保存されます。
このセットアップは、特定のページに対してリクエストが行われたときに完全に機能します。たとえば、「www.mysite.com/foobar.aspx」を要求すると、「foobar.aspx」に保存されているコンテンツが提供されます。さらに、「www.mysite.com/subdir/foobar.aspx」を要求すると、適切なコンテンツも提供されます。
問題はこれです: 「www.mysite.com/foobar」のようなものを要求すると、物事が崩壊し始めます。ディレクトリがディスク上に存在し、IIS に index.aspx などの既定のページが構成されていない場合、"Directory Listing Denied" エラーが発生します。ディレクトリが存在しない場合は、単に 404 - Resource Not Found が表示されます。
私はいくつかのことを試しましたが、これまでのところ、何も違いはありませんでした。IIS は、ディレクトリ (または既存のディレクトリ内の既定のファイル) が存在しないことを単に通知し、独自のエラー コードを提供しているように見えます。アプリケーションに要求をどう処理するかを尋ねることはありません。アプリケーションに到達した場合、問題を解決できるのですが、現状ではかなり迷っています。これを引き起こしているIISの設定があるかどうかは誰にも分かりますか?
この件に関して見つけられるすべてのリソースを探しましたが、何もありません。データベースと ZIP ファイルの両方からコンテンツを提供するチュートリアルを読んだので、これが可能であることはわかっています。ヘルプ!
ps、IIS6 と .NET 3.5 を実行しています