Zum Inhalt springen
Kontakt

Sebastian Nawrot
Dorneystr. 45
44149 Dortmund

Webentwicklung & Technik

IIS Windows Server 2026: Microsoft's Webserver für .NET & Enterprise

Internet Information Services (IIS) erklärt: ASP.NET Hosting, Windows-Integration, HTTP/3 und Enterprise-Features.

Sebastian Nawrot
12 Min. Lesezeit
#IIS#Windows Server#ASP.NET#Microsoft#Enterprise#Webserver
IIS Windows Server 2026: Microsoft's Webserver für .NET & Enterprise

Internet Information Services (IIS) ist Microsofts hauseigener Webserver - und für Windows-Umgebungen oft die naheliegendste Wahl. Wenn du ASP.NET-Anwendungen hostest, in einer Active Directory-Umgebung arbeitest oder Enterprise-Features wie integrierte Windows-Authentifizierung benötigst, führt kaum ein Weg an IIS vorbei.

Die Geschichte von IIS reicht zurück bis 1995, als Microsoft den Webserver erstmals mit Windows NT 3.51 auslieferte. Seitdem hat sich IIS von einem einfachen HTTP-Server zu einer vollständigen Anwendungsplattform entwickelt. Mit jeder Windows Server-Version kamen neue Features hinzu: Application Pools für Prozessisolierung, das modulare Design ab IIS 7, und zuletzt HTTP/3-Support mit Windows Server 2022.

Der Marktanteil von IIS liegt 2026 bei etwa 8% - deutlich hinter Nginx und Apache, aber stabil. Das mag auf den ersten Blick wenig erscheinen, aber IIS dominiert seinen Zielmarkt: Enterprise-Umgebungen mit Windows-Infrastruktur, .NET-Entwicklung und Organisationen, die auf Microsoft-Support setzen. Große Unternehmen, Behörden und Konzerne mit bestehender Microsoft-Lizenzierung wählen IIS nicht trotz, sondern wegen der tiefen Windows-Integration.


Technische Architektur: Wie IIS unter der Haube funktioniert

Die Architektur von IIS unterscheidet sich fundamental von Unix-basierten Webservern wie Nginx oder Apache. Das Verständnis dieser Architektur hilft dir, IIS optimal zu konfigurieren und Performance-Probleme zu diagnostizieren.

Kernel-Mode und User-Mode: Das Zwei-Schichten-Modell

IIS besteht aus zwei Hauptkomponenten, die in unterschiedlichen Betriebsmodi laufen:

HTTP.sys (Kernel-Mode): Der HTTP-Protokoll-Stack läuft direkt im Windows-Kernel. HTTP.sys empfängt eingehende HTTP-Anfragen, führt URL-Parsing durch, handhabt SSL/TLS-Termination und cached statische Inhalte. Durch die Kernel-Mode-Ausführung ist HTTP.sys extrem schnell bei statischen Dateien - die Daten müssen nicht zwischen Kernel- und User-Space kopiert werden.

IIS Worker Process w3wp.exe (User-Mode): Die eigentliche Anwendungslogik läuft in Worker-Prozessen. Jeder Application Pool hat einen oder mehrere Worker-Prozesse, die ASP.NET-Code ausführen, ISAPI-Extensions laden und dynamische Inhalte generieren.

Diese Trennung bietet Vorteile: HTTP.sys kann selbst dann Anfragen entgegennehmen, wenn der Worker-Prozess abstürzt oder recycelt wird. Außerdem ist der Kernel-Mode-Cache unglaublich effizient für statische Inhalte.

Application Pools: Isolierung als Grundprinzip

Application Pools sind das zentrale Konzept für Prozessisolierung in IIS. Jeder Pool läuft in einem eigenen w3wp.exe-Prozess mit eigener Speicherverwaltung und eigenem Identitätskontext.

Die Vorteile dieser Isolation:

  • Fehlertoleranz: Ein Absturz in einer Anwendung beeinträchtigt keine anderen Pools
  • Sicherheit: Jeder Pool kann mit unterschiedlichen Berechtigungen laufen
  • Ressourcenkontrolle: CPU- und Speicherlimits pro Pool einstellbar
  • Unabhängige Recycling-Zyklen: Pools können individuell neugestartet werden
# Neuen Application Pool erstellen
New-WebAppPool -Name "MeineAnwendung"

# Pool-Identität konfigurieren
Set-ItemProperty IIS:\AppPools\MeineAnwendung -Name processModel.identityType -Value ApplicationPoolIdentity

Protokoll-Support

IIS unterstützt alle modernen HTTP-Protokolle:

  • HTTP/1.1: Vollständiger Support seit IIS 6
  • HTTP/2: Nativ ab IIS 10 (Windows Server 2016)
  • HTTP/3: Ab Windows Server 2022 mit QUIC-Unterstützung
  • WebSocket: Vollständig integriert für Echtzeit-Anwendungen
  • gRPC: Unterstützt über ASP.NET Core

Der HTTP/3-Support in Windows Server 2022 ist besonders interessant: Microsoft hat QUIC direkt in HTTP.sys integriert, was bedeutet, dass HTTP/3 auch ältere ASP.NET Framework-Anwendungen beschleunigen kann - ohne Code-Änderungen.


Installation und Konfiguration: IIS einrichten

Die Installation von IIS unterscheidet sich je nach Windows-Version. Hier die wichtigsten Installationswege.

Windows Server: Installation über Server Manager

Auf Windows Server installierst du IIS als Server-Rolle:

  1. Öffne den Server Manager
  2. Klicke auf ManageAdd Roles and Features
  3. Wähle Role-based or feature-based installation
  4. Selektiere deinen Server
  5. Aktiviere Web Server (IIS) unter Server Roles
  6. Wähle die benötigten Role Services (ASP.NET, Windows Authentication, etc.)
  7. Schließe den Wizard ab

Alternativ per PowerShell - deutlich schneller und skriptbar:

# IIS mit Management-Tools installieren
Install-WindowsFeature -Name Web-Server -IncludeManagementTools

# Zusätzliche Features für ASP.NET Core
Install-WindowsFeature -Name Web-Asp-Net45, Web-Net-Ext45

# Alle verfügbaren IIS-Features auflisten
Get-WindowsFeature -Name Web-*

Windows 10/11: IIS als optionales Feature

Auf Windows Desktop-Versionen aktivierst du IIS über die Windows-Features:

  1. Öffne SystemsteuerungProgrammeWindows-Features aktivieren oder deaktivieren
  2. Aktiviere Internetinformationsdienste
  3. Erweitere den Eintrag und wähle die benötigten Unterfeatures
  4. Klicke OK und warte auf die Installation

Per PowerShell (als Administrator):

# IIS auf Windows 10/11 aktivieren
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServerRole
Enable-WindowsOptionalFeature -Online -FeatureName IIS-WebServer
Enable-WindowsOptionalFeature -Online -FeatureName IIS-ManagementConsole

Der IIS Manager: Die zentrale Verwaltungsoberfläche

Nach der Installation ist der IIS Manager dein primäres Werkzeug. Starte ihn über inetmgr.exe oder das Startmenü.

Die Oberfläche ist hierarchisch aufgebaut:

  • Server-Ebene: Globale Einstellungen für alle Sites
  • Application Pool-Ebene: Pool-spezifische Konfiguration
  • Site-Ebene: Website-Konfiguration
  • Application/Virtual Directory: Unterverzeichnis-Einstellungen

Wichtige Bereiche im IIS Manager:

BereichFunktion
SitesWebsites erstellen, starten, stoppen
Application PoolsWorker-Prozesse verwalten
AuthenticationAuthentifizierungsmethoden konfigurieren
SSL SettingsHTTPS und Client-Zertifikate
Handler MappingsDateitypen zu Handlern zuordnen

Web.config: Die XML-basierte Konfiguration

Jede IIS-Website kann eine web.config-Datei im Root-Verzeichnis haben. Diese Datei überschreibt Server-Einstellungen auf Site-Ebene:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <!-- URL Rewrite -->
        <rewrite>
            <rules>
                <rule name="HTTPS Redirect" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{HTTPS}" pattern="off" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"
                            redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>

        <!-- Statische Kompression -->
        <httpCompression>
            <staticTypes>
                <add mimeType="text/*" enabled="true" />
                <add mimeType="application/javascript" enabled="true" />
            </staticTypes>
        </httpCompression>

        <!-- Custom Error Pages -->
        <httpErrors errorMode="Custom">
            <remove statusCode="404" />
            <error statusCode="404" path="/errors/404.html" responseMode="File" />
        </httpErrors>
    </system.webServer>
</configuration>

Die web.config ist mächtig: Du kannst URL-Rewrites definieren, Caching steuern, Handler konfigurieren und Sicherheitseinstellungen setzen - alles ohne den IIS Manager zu öffnen.


ASP.NET und .NET Core Hosting: Die Stärke von IIS

IIS wurde für .NET-Anwendungen optimiert. Die Integration ist so tief, dass viele .NET-Features nur auf IIS vollständig verfügbar sind.

ASP.NET Framework: Das klassische .NET

Für traditionelle ASP.NET Framework-Anwendungen (Web Forms, MVC 5 und älter) ist IIS die native Plattform:

<!-- web.config für ASP.NET Framework -->
<configuration>
    <system.web>
        <compilation debug="false" targetFramework="4.8" />
        <httpRuntime targetFramework="4.8" maxRequestLength="30000" />
        <customErrors mode="RemoteOnly" defaultRedirect="/Error.aspx" />
    </system.web>
</configuration>

ASP.NET Framework läuft ausschließlich auf Windows und erfordert das .NET Framework (nicht .NET Core). Die Ausführung erfolgt direkt im IIS Worker Process über das ASP.NET ISAPI-Modul.

ASP.NET Core: Zwei Hosting-Modelle

ASP.NET Core bietet mehr Flexibilität. Du hast zwei Optionen für das IIS-Hosting:

In-Process Hosting (empfohlen)

Die Anwendung läuft direkt im IIS Worker Process (w3wp.exe). Das ist schneller, da keine Prozess-zu-Prozess-Kommunikation nötig ist.

<!-- web.config für ASP.NET Core In-Process -->
<configuration>
    <system.webServer>
        <handlers>
            <add name="aspNetCore" path="*" verb="*"
                 modules="AspNetCoreModuleV2" resourceType="Unspecified" />
        </handlers>
        <aspNetCore processPath="dotnet"
                    arguments=".\MeineApp.dll"
                    stdoutLogEnabled="false"
                    hostingModel="InProcess">
        </aspNetCore>
    </system.webServer>
</configuration>

Out-of-Process Hosting

IIS fungiert als Reverse Proxy vor dem Kestrel-Server. Die Anwendung läuft in einem separaten dotnet-Prozess:

<!-- web.config für ASP.NET Core Out-of-Process -->
<aspNetCore processPath="dotnet"
            arguments=".\MeineApp.dll"
            hostingModel="OutOfProcess">
    <environmentVariables>
        <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Production" />
    </environmentVariables>
</aspNetCore>

Out-of-Process ist flexibler (du kannst Kestrel direkt konfigurieren), aber In-Process bietet bessere Performance - etwa 4-5x schneller bei kurzen Requests.

Kestrel und IIS: Das Zusammenspiel

Die Kombination von Kestrel (dem modernen .NET-Webserver) und IIS ist ein häufiges Setup:

  • IIS übernimmt: SSL-Termination, statische Dateien, HTTP/3, Windows-Authentifizierung
  • Kestrel übernimmt: ASP.NET Core-Anwendungslogik

Diese Architektur nutzt die Stärken beider Server. IIS profitiert von HTTP.sys für alles, was der Kernel schneller kann, während Kestrel die .NET-Anwendung effizient ausführt.

Deployment-Optionen

Für das Deployment von .NET-Anwendungen auf IIS gibt es mehrere Wege:

Web Deploy (MSDeploy)

# Deployment per Web Deploy
msdeploy.exe -verb:sync -source:contentPath="C:\Build\MeineApp"
             -dest:contentPath="Default Web Site/MeineApp",
             computerName="server.example.com"

FTP/SFTP: Einfach, aber ohne atomare Deployments

CI/CD-Integration: Azure DevOps, GitHub Actions oder Jenkins können direkt auf IIS deployen:

# GitHub Actions Beispiel
- name: Deploy to IIS
  uses: SamKirkland/FTP-Deploy-Action@4.3.0
  with:
    server: ftp.example.com
    username: ${{ secrets.FTP_USER }}
    password: ${{ secrets.FTP_PASS }}
    local-dir: ./publish/

Performance und Skalierung: IIS optimal nutzen

IIS bietet mehrere Mechanismen, um Performance zu optimieren und auf hohe Last zu skalieren.

Kernel-Mode Caching: Maximale Geschwindigkeit für statische Inhalte

HTTP.sys kann statische Dateien direkt aus dem Kernel-Mode ausliefern - ohne dass der Request jemals den User-Mode erreicht. Das ist extrem schnell.

<!-- Kernel-Mode Caching aktivieren -->
<configuration>
    <system.webServer>
        <caching>
            <profiles>
                <add extension=".css" policy="CacheUntilChange"
                     kernelCachePolicy="CacheUntilChange" />
                <add extension=".js" policy="CacheUntilChange"
                     kernelCachePolicy="CacheUntilChange" />
                <add extension=".jpg" policy="CacheUntilChange"
                     kernelCachePolicy="CacheUntilChange" />
            </profiles>
        </caching>
    </system.webServer>
</configuration>

In Benchmarks erreicht der Kernel-Mode-Cache Durchsatzraten, die mit Nginx vergleichbar sind - ein Bereich, in dem IIS oft unterschätzt wird.

Output Caching: Dynamische Inhalte beschleunigen

Für dynamische Seiten, die sich selten ändern, bietet IIS Output Caching:

<system.webServer>
    <caching>
        <profiles>
            <add extension=".aspx" policy="CacheForTimePeriod"
                 duration="00:05:00" location="ServerAndClient" />
        </profiles>
    </caching>
</system.webServer>

In ASP.NET Core verwendest du Response Caching Middleware:

[ResponseCache(Duration = 300, Location = ResponseCacheLocation.Any)]
public IActionResult GetProducts()
{
    return View(products);
}

Application Request Routing (ARR): Load Balancing

ARR ist Microsofts Load-Balancing-Lösung für IIS. Du installierst es als separates Modul:

# ARR über Web Platform Installer
.\WebpiCmd.exe /Install /Products:ARRv3_0

Konfiguration einer Server Farm:

  1. Öffne IIS Manager → Server Farms
  2. Erstelle eine neue Farm
  3. Füge Backend-Server hinzu
  4. Konfiguriere Health Checks und Load-Balancing-Algorithmus

ARR unterstützt verschiedene Algorithmen:

  • Weighted Round Robin: Gleichmäßige Verteilung mit Gewichtung
  • Weighted Total Traffic: Basierend auf aktuellem Traffic
  • Response Time: Server mit schnellster Antwortzeit bevorzugen
  • Server Variable Hash: Sticky Sessions basierend auf Variablen

Web Farm Framework: Multi-Server-Deployments

Für größere Umgebungen ermöglicht das Web Farm Framework synchronisierte Deployments über mehrere Server:

  • Automatische Synchronisation von Inhalten und Konfiguration
  • Zentrales Management aller Farm-Mitglieder
  • Provisioning neuer Server aus einem Template

Sicherheit: IIS richtig absichern

IIS bietet umfangreiche Sicherheitsfeatures, die tief in Windows integriert sind.

Windows-Authentifizierung: NTLM und Kerberos

Die Integration mit Active Directory ist eine der größten Stärken von IIS. Benutzer können sich mit ihren Windows-Credentials anmelden - ohne separate Benutzerverwaltung.

<!-- Windows-Authentifizierung in web.config -->
<system.webServer>
    <security>
        <authentication>
            <anonymousAuthentication enabled="false" />
            <windowsAuthentication enabled="true">
                <providers>
                    <add value="Negotiate" />
                    <add value="NTLM" />
                </providers>
            </windowsAuthentication>
        </authentication>
    </security>
</system.webServer>

Negotiate probiert zuerst Kerberos (sicherer, benötigt korrekten SPN) und fällt auf NTLM zurück. Für Intranet-Anwendungen ist das perfekt - Benutzer sind automatisch angemeldet.

SSL/TLS: Certificate Store Integration

IIS nutzt den Windows Certificate Store für SSL-Zertifikate. Das Zertifikatsmanagement erfolgt über:

  • IIS Manager: Server → Server Certificates
  • MMC Snap-in: certmgr.msc für lokale Zertifikate
  • PowerShell: Vollständige Automatisierung
# SSL-Binding erstellen
New-WebBinding -Name "Default Web Site" -Protocol https -Port 443

# Zertifikat binden
$cert = Get-ChildItem -Path Cert:\LocalMachine\My |
        Where-Object { $_.Subject -match "example.com" }

(Get-WebBinding -Name "Default Web Site" -Protocol https).
    AddSslCertificate($cert.Thumbprint, "my")

Für Let's Encrypt gibt es win-acme, ein Tool zur automatischen Zertifikatserneuerung:

# win-acme für automatische Let's Encrypt-Zertifikate
.\wacs.exe --target iis --siteid 1 --installation iis

Request Filtering: URL-basierte Sicherheit

Request Filtering blockiert verdächtige Anfragen bevor sie die Anwendung erreichen:

<system.webServer>
    <security>
        <requestFiltering>
            <!-- Maximale URL-Länge -->
            <requestLimits maxUrl="4096" maxQueryString="2048" />

            <!-- Gefährliche Dateiendungen blockieren -->
            <fileExtensions>
                <add fileExtension=".config" allowed="false" />
                <add fileExtension=".cs" allowed="false" />
            </fileExtensions>

            <!-- Bestimmte Verben einschränken -->
            <verbs>
                <add verb="TRACE" allowed="false" />
                <add verb="DEBUG" allowed="false" />
            </verbs>

            <!-- Versteckte Segmente blockieren -->
            <hiddenSegments>
                <add segment="bin" />
                <add segment="App_Code" />
            </hiddenSegments>
        </requestFiltering>
    </security>
</system.webServer>

Dynamic IP Restrictions: DDoS-Schutz

IIS kann IP-Adressen automatisch sperren, die zu viele Anfragen senden:

<system.webServer>
    <security>
        <dynamicIpSecurity>
            <denyByConcurrentRequests enabled="true" maxConcurrentRequests="20" />
            <denyByRequestRate enabled="true" maxRequests="100"
                               requestIntervalInMilliseconds="2000" />
        </dynamicIpSecurity>
    </security>
</system.webServer>

Diese Einstellung sperrt IPs, die mehr als 20 gleichzeitige Verbindungen haben oder mehr als 100 Requests in 2 Sekunden senden.


Vor- und Nachteile von IIS

Vorteile

Nahtlose Windows- und Active Directory-Integration Für Organisationen mit Windows-Infrastruktur ist IIS unschlagbar. Windows-Authentifizierung, Gruppenrichtlinien, Event-Log-Integration - alles funktioniert out-of-the-box.

Beste Plattform für ASP.NET Wenn du .NET entwickelst, ist IIS die natürlichste Wahl. Die Integration ist tief, das Tooling exzellent (Visual Studio, Web Deploy), und Microsofts Support ist umfassend.

GUI-basierte Verwaltung Der IIS Manager macht Administration zugänglich. Während Nginx und Apache Kommandozeilen-Kenntnisse erfordern, können auch weniger erfahrene Administratoren IIS verwalten.

Enterprise-Support von Microsoft Für Unternehmen mit Support-Verträgen bietet Microsoft direkten Support für IIS. Das ist für kritische Anwendungen ein wichtiger Faktor.

Nativer HTTP/3-Support Windows Server 2022 brachte HTTP/3 direkt in HTTP.sys - das bedeutet QUIC-Performance ohne Anwendungsänderungen.

Nachteile

Nur Windows verfügbar IIS läuft ausschließlich auf Windows. Das bedeutet Windows Server-Lizenzkosten und keine Linux-Container. Für Cloud-native Architekturen mit Kubernetes ist das eine signifikante Einschränkung.

Höhere Systemanforderungen Windows Server benötigt mehr RAM und CPU als ein minimales Linux-System. Ein IIS-Server braucht mindestens 2 GB RAM für den Betrieb, während Nginx auf 512 MB läuft.

Weniger flexibel als Nginx/Apache Die Konfigurationsoptionen sind begrenzter. Komplexe URL-Rewrites oder Edge-Cases erfordern manchmal kreative Lösungen oder zusätzliche Module.

Kleinere Community Die Open-Source-Community um Apache und Nginx ist größer. Es gibt mehr Tutorials, Stack Overflow-Antworten und Third-Party-Module für die Unix-Webserver.

Nicht für Linux-Container geeignet In einer Welt, die zunehmend auf Kubernetes und Linux-Container setzt, ist IIS limitiert. Windows-Container existieren, sind aber weniger verbreitet und ressourcenhungriger.


Fazit: Wann IIS die richtige Wahl ist

IIS hat seinen klaren Platz im Webserver-Ökosystem. Er ist nicht der schnellste, nicht der flexibelste und nicht der ressourceneffizienteste Webserver - aber für seinen Zielmarkt ist er oft die beste Wahl.

IIS ist ideal für dich, wenn:

  • Du in einer Windows-Umgebung mit Active Directory arbeitest
  • Deine Anwendungen auf ASP.NET oder ASP.NET Core basieren
  • Du Windows-Authentifizierung (Kerberos/NTLM) benötigst
  • Dein Unternehmen Microsoft-Support erwartet
  • Du eine GUI-basierte Administration bevorzugst

IIS ist weniger geeignet, wenn:

  • Du Linux-Server oder Container bevorzugst
  • Lizenzkosten minimiert werden sollen
  • Du maximale Flexibilität bei der Konfiguration brauchst
  • Dein Stack auf PHP, Python oder Node.js basiert

Für .NET-Entwickler und Windows-Shops bleibt IIS auch 2026 die solide, bewährte Wahl. Die HTTP/3-Unterstützung, die kontinuierlichen Verbesserungen in ASP.NET Core und die tiefe Windows-Integration machen IIS zu einer Plattform, die Microsoft weiterhin aktiv entwickelt.

Zurück zum Webserver-Vergleich 2026


Weiterführende Ressourcen

Hier findest du weitere Informationen zu IIS und verwandten Themen:


Letzte Aktualisierung: März 2026

Möchtest du auch so einen Blog?

Ich entwickle moderne, SEO-optimierte Websites und Blogs mit Next.js, React und Tailwind CSS.