<modules runAllManagedModulesForAllRequests = "true" /> Bedeutung

132

Ich wollte wissen, was das bedeutet

<modules runAllManagedModulesForAllRequests="true" />

Ich verwende IIS 7.5 und habe eine einfache Webanwendung. Muss ich dies in meine Datei web.config schreiben? Ich habe auch einige http-Handler für jquery ajax call geschrieben. Ich verwende Formularauthentifizierung und asp.net 4.0.

Wie kann ich bestimmen, welches Modul ich ausführen muss und welches nicht?

शेखर
quelle

Antworten:

121

Modulvoraussetzungen:

Die IIS-Core-Engine verwendet Voraussetzungen, um zu bestimmen, wann ein bestimmtes Modul aktiviert werden soll. Leistungsgründe können beispielsweise bestimmen, dass Sie verwaltete Module nur für Anforderungen ausführen möchten, die auch an einen verwalteten Handler gehen. Die Voraussetzung im folgenden Beispiel ( precondition="managedHandler") aktiviert das Formularauthentifizierungsmodul nur für Anforderungen, die auch von einem verwalteten Handler verarbeitet werden, z. B. Anforderungen an ASPX- oder ASPX-Dateien:

<add name="FormsAuthentication" type="System.Web.Security.FormsAuthenticationModule" preCondition="managedHandler" />

Wenn Sie das Attribut entfernen precondition="managedHandler", gilt die Formularauthentifizierung auch für Inhalte, die nicht von verwalteten Handlern bereitgestellt werden, z. B. .html, .jpg, .doc, sondern auch für klassische ASP- (.asp) oder PHP- (.php) Erweiterungen. Unter " So nutzen Sie die integrierte IIS-Pipeline " finden Sie ein Beispiel für die Aktivierung von ASP.NET-Modulen für alle Inhalte.

Sie können auch eine Verknüpfung verwenden, um zu ermöglichen, dass alle verwalteten (ASP.NET) Module für alle Anforderungen in Ihrer Anwendung ausgeführt werden, unabhängig von der " managedHandler" Voraussetzung.

managedHandlerVerwenden Sie die runAllManagedModulesForAllRequestsEigenschaft im <modules>Abschnitt, damit alle verwalteten Module für alle Anforderungen ausgeführt werden können, ohne jeden Moduleintrag so zu konfigurieren, dass die Vorbedingung " " entfernt wird :

<modules runAllManagedModulesForAllRequests="true" />    

Wenn Sie diese Eigenschaft verwenden, hat die managedHandlerVorbedingung " " keine Auswirkung und alle verwalteten Module werden für alle Anforderungen ausgeführt.

Aus IIS-Modulen kopiert Übersicht: Voraussetzungen

Kapil Khandelwal
quelle
Ist es gut, alle Modelle für alle Anfragen auszuführen, oder werde ich dort genauer darauf eingehen? Beeinflusst dies die Geschwindigkeit der Anwendung?
15.
2
Ja, es wird ein Leistungsproblem geben. Sie sollten stattdessen die Vorbedingung verwenden.
Kapil Khandelwal
3
Wie soll ich dann entscheiden, welches Modul ich verwenden muss und welches nicht?
15.
6
Eine Folgefrage. Ich sehe, dass es möglich ist, anstelle von allen auch separate Module zu aktivieren. Siehe meine Frage ( stackoverflow.com/questions/20998816/… ), die dort hinzuzufügende Lösung <modules runAllManagedModulesForAllRequests="true">. Aber ich sehe jetzt, dass es Overhead verursachen könnte. Gibt es also ein bestimmtes Modul, das dafür verantwortlich ist, dass ich den Punkt "" erhalte? in MVC WebAPI Url, anstatt sie alle mit zu aktivieren <modules runAllManagedModulesForAllRequests="true">? Ist es zum Beispiel das Modul "UrlAuthorization"?
Yves Schelpe
Das Hinzufügen des Modul-Tag-Abschnitts funktioniert für mich. Ich benutze MVC 5, .net Framework 4.5.0, IIS 7 und Windows Server 2008
Gavin
-8

Fügen Sie den folgenden Code in web.config hinzu

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
</system.webServer> 
hossein.sharifipour
quelle
3
warum möchte ich hinzufügen?
शेखर