Verhindern, dass IIS Einstellungen auf Unterverzeichnisse anwendet

Verhindern, dass IIS Einstellungen auf Unterverzeichnisse anwendet

Ich habe eine Website, die eineStandardDokument für das Anwendungsstammverzeichnis, aber nicht für Unterverzeichnisse. Ich verwende die Funktion „Verzeichnis durchsuchen“, möchte aber, dass sie nur für Unterverzeichnisse funktioniert.

hier ist ein Ausschnitt meiner web.config:

    <system.webServer>
    <defaultDocument enabled="true">
        <files>
            <clear />
            <add value="1f200f74-07e5-4681-a275-e9cbc9f1b794.txt" />
        </files>
    </defaultDocument>
    <directoryBrowse enabled="true" />

Ich habe versucht, mich zu bewerbenerbenInChildApplicationszum Element defaultDocument, aber das funktioniert nicht, es führt tatsächlich zum Absturz der Anwendung. Ich möchte also, dass defaultDocument nur auf das Stammverzeichnis angewendet wird, und ich möchte directoryBrowse auf alle Unterverzeichnisse anwenden.

Mir ist klar, dass ich web.config-Dateien in jedem unmittelbaren Unterverzeichnis haben und ein Clear auf defaultDocument anwenden könnte, aber ich kann keine web.config-Dateien in diese Verzeichnisse legen (die Art dieser Anwendung lässt das nicht zu). (AußerdemallowSubDirConfigfunktioniert hier nicht, das würde nur verhindernwird bearbeitetvon web.config-Dateien in Unterverzeichnissen.)

Gibt es eine Konfiguration in web.config, die eine Einstellung auf diesen Knoten anwendet?nur?

Antwort1

Die Lösung besteht in der Verwendung Standort-Tags:

Standorttags werden verwendet, um pfadspezifische Konfigurationen anzugeben, anstatt eine web.config-Datei in dem Ordner zu haben, der diesem virtuellen Pfad zugeordnet ist. Der Standorttag für einen Pfad wird auf einer übergeordneten Ebene in der Konfigurationshierarchie festgelegt und gilt als auf dieser übergeordneten Ebene befindlich.

Siehe das Beispiel unter dem obigen Link.

Antwort2

Basierend auf der Antwort von harrymc konnte ich diese Konfiguration zum Laufen bringen:

<location path="." inheritInChildApplications="false">
    <system.webServer>
        <defaultDocument enabled="true">
            <files>
                <clear />
                <add value="1f200f74-07e5-4681-a275-e9cbc9f1b794.txt" />
            </files>
        </defaultDocument>
    </system.webServer>
</location>
<system.webServer>
    <!--<defaultDocument enabled="true">
        <files>
            <clear />
            <add value="1f200f74-07e5-4681-a275-e9cbc9f1b794.txt" />
        </files>
    </defaultDocument>-->
    <directoryBrowse enabled="true" />
...

Verwendung dererbenInChildApplicationsAttribut imStandortElement ist auch notwendig. Ich habe mein ursprüngliches „defaultDocument“-Element drin gelassen, aber als Platzhalter für meinen ursprünglichen Versuch auskommentiert.

verwandte Informationen