2

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 を実行しています

4

1 に答える 1

2

IIS は、特定の拡張機能に対して ASP.NET プロセスに要求を渡すように構成されている場合にのみ、ASP.NET プロセスに要求を渡します。デフォルトは aspx、ascx などです。つまり、.html ファイルを要求すると、ASP.NET はその HTTP 要求を認識しません。空の拡張子についても同様です。

この動作を変更するには、ASP.NET プロセスにワイルドカード マッピングを追加します。IIS マネージャーをロードし、Web サイトの [プロパティ] に移動して、[ホーム ディレクトリ] タブを確認します。「構成」をクリックすると、拡張機能からアプリケーションへのマッピングが表示されます。

于 2010-01-20T22:04:21.820 に答える