Als Teil eines CMS habe ich einen benutzerdefinierten VirtualPathProvider erstellt, der dazu dient, eine einzelne Datei anstelle einer tatsächlichen Dateistruktur bereitzustellen. Ich habe ihn so eingerichtet, dass eine Datei, die tatsächlich auf dem Server vorhanden ist, auch bereitgestellt wird. Wenn die Datei nicht existiert, wird stattdessen der virtuelle Inhalt, der für diese Adresse gespeichert ist, bereitgestellt. Dies ist vergleichbar mit dem Konzept der Bereitstellung einer Website aus Dateien, die in einer Datenbank gespeichert sind, obwohl in diesem Fall der Inhalt in XML-Dateien auf dem Server gespeichert ist.
Diese Einrichtung funktioniert perfekt, wenn eine Anfrage an eine bestimmte Seite gestellt wird. Wenn ich z. B. nach "www.mysite.com/foobar.aspx" frage, wird der Inhalt, der für "foobar.aspx" gespeichert ist, angezeigt. Wenn ich außerdem nach "www.mysite.com/subdir/foobar.aspx" frage, wird der entsprechende Inhalt ebenfalls bereitgestellt.
Das Problem ist folgendes: Wenn ich nach etwas wie "www.mysite.com/foobar" frage, fangen die Dinge an zu scheitern. Wenn das Verzeichnis auf der Festplatte existiert (und keine konfigurierte Standardseite in IIS hat, wie index.aspx), erhalte ich einen Fehler "Directory Listing Denied". Wenn das Verzeichnis nicht existiert, erhalte ich einfach eine 404 - Resource Not Found.
Ich habe verschiedene Dinge ausprobiert, und bisher hat nichts von dem, was ich getan habe, etwas bewirkt. Es scheint, als ob der IIS einfach das Nichtvorhandensein eines Verzeichnisses (oder einer Standarddatei in einem bestehenden Verzeichnis) feststellt und seinen eigenen Fehlercode ausgibt, ohne meine Anwendung zu fragen, was mit der Anfrage geschehen soll. Wenn die Anwendung jemals gefragt würde, könnte ich das Problem lösen, aber so wie es aussieht, bin ich ziemlich ratlos. Weiß jemand, ob es eine Einstellung im IIS gibt, die dies verursacht?
Ich habe nach jeder Quelle gesucht, die ich zu diesem Thema finden kann, und bin leer ausgegangen. Ich weiß, dass dies möglich sein sollte, denn ich habe Anleitungen zur Bereitstellung von Inhalten aus Datenbanken und ZIP-Dateien gelesen. HILFE!
p.s., ich verwende IIS6 und .NET 3.5