Unterschied zwischen <system.web> und <system.webServer>?

197

Jedes Mal, wenn ich einen Handler oder ein Modul für ASP.NET mit IIS7 hinzufügen muss, wird mir in den Anweisungen empfohlen, es in zwei Abschnitte zu unterteilen: system.webund system.webserver.

<system.web>
    <httpHandlers>
    </httpHandlers>
    <httpModules>
    </httpModules>
</system.web>

Und das:

<system.webServer>
    <modules>
    </modules>
    <handlers>
    </handlers>
</system.webServer>

Was ist der Unterschied zwischen diesen beiden Abschnitten?

Wenn ich es nicht zum system.webAbschnitt hinzufüge , funktioniert mein Visual Studio 2008-Debugger außerdem nicht richtig.

Danmine
quelle
2
Eine bessere aktuelle Referenz hierfür ist: msdn.microsoft.com/en-us/library/46c5ddfy.aspx
Shannon

Antworten:

157

Der Abschnitt system.web dient zum Konfigurieren von IIS 6.0, während die Version system.webserver zum Konfigurieren von IIS 7.0 verwendet wird. IIS 7.0 enthält eine neue ASP.NET-Pipeline und einige Konfigurationsunterschiede, daher die zusätzlichen Konfigurationsabschnitte.

Jedoch...

Wenn Sie IIS 7.0 nur im integrierten Modus ausführen, sollten Sie die Handler nicht zu beiden Abschnitten hinzufügen müssen. Das Hinzufügen zu system.web ist ein Fallback für IIS 7.0, das im klassischen Modus ausgeführt wird, sofern ich mich nicht irre. Ich habe diesbezüglich keine umfangreichen Tests durchgeführt.

Weitere Informationen finden Sie unter http://msdn.microsoft.com/en-us/library/bb763179.aspx .

Chris
quelle
4
Was ist mit Attributen wie <httpRuntime>, die in system.web platziert werden, aber im integrierten IIS 7-Modus dennoch einen Unterschied machen?
Sclarson
38
Der Abschnitt system.web wird nicht durch den Abschnitt system.webserver ersetzt, sondern nur erweitert.
Chris
Unter IIS 8.5 habe ich festgestellt, dass die httpCookiesEinstellung in system.webServer nicht verfügbar ist, aber funktioniert, wenn ich ein system.web erstelle und dort ablege.
Eborbob
44

Ersteres ist für den klassischen Modus.

Letzteres gilt für den integrierten Pipeline-Modus (verfügbar in IIS7 +).

Leppie
quelle
Nach meiner Erfahrung ist dies eine bessere Antwort in Bezug auf Länge, Klarheit und Realität. Fügen Sie zusätzlich zum klassischen Modus auf dem ersteren IIS Express und andere Server hinzu, die nicht IIS 7 sind.
Ben Gripka