ASP.NET (Active Server Pages .NET) ist ein Webframework von Microsoft zur Entwicklung dynamischer Webseiten, Webanwendungen und Webservices. ASP.NET ist Nachfolger von Active Server Pages (ASP) und erschien 2002 in der ersten Version. ASP.NET ist Teil des klassischen .Net-Frameworks bis zur aktuellen Version 4.8. Parallel gibt es seit 2015 ASP.NET Core, ein quelloffenes separates Framework, das auch offiziell GNU/Linux und macOS unterstützt.Introduction to ASP.NET 5 Konzeptioneller Überblick zu ASP.NET 5.Roadmap ASP.NET 5, Roadmap ASP.NET 5. In .NET 5.0, das auf der .NET-Core-Technologie basiert, entfallen Teile des bisherigen ASP.NET (ASP.NET Webforms, ASP.NET Webservices).
ASP.NET kommt auf ca. 4,5 % aller Websites als serverseitige Programmiersprache zum Einsatz und liegt damit auf dem sechsten Platz der am häufigsten verwendeten serverseitigen Sprachen zum Erstellen von Webseiten (Stand: 2. März 2026).
ASP.NET Überblick gerahmt|Überblick über die Funktionsweise von ASP.NET
ASP.NET gehört zum .Net-Framework und stellt eine Methode dar, um .NET-Anwendungen in IIS oder anderen mit ASP.NET kompatiblen Webservern zu verwalten („hosting“). ASP.NET stellt hierbei Klassen zur Verfügung, die allen Webanwendungen gemeinsam sind, wie etwa die Authentifizierung und Autorisierung von Benutzern. Das wichtigste Element ist hierbei die HTTP-Laufzeitumgebung, die HTTP-Anfragen bearbeitet.
Mit ASP.NET können Webanwendungen in von .NET unterstützten Sprachen (theoretisch alle CLR-kompatiblen Sprachen) erstellt werden, gebräuchlich sind nahezu ausschließlich objektorientierte Sprachen wie C# und VB.NET. Eingeschränkt wird die Sprachwahl meistens nur von der jeweiligen Entwicklungsumgebung. ASP.NET ist somit keine Programmiersprache, sondern eine Bündelung von Techniken. ASP.NET-Sprachen werden nicht interpretiert, sondern in CIL übersetzt und kompiliert.
Auf die ASP.NET-Plattform setzen die jeweiligen Verfahren, wie ASP.NET WebForms, ASP.NET AJAX, ASP.NET MVC, ASP.NET Dynamic Data, ASP.NET WebAPI und ASP.NET SignalR auf, welche jeweils als HTTP-Handler implementiert sind.
ASP.NET Web Forms Die Web Forms bilden den Grundbaustein der Entwicklung von Webinhalten mit ASP.NET in seiner klassischen Form. Web Forms sind in Dateien mit der Dateiendung .aspx enthalten. Die ASPX-Dateien enthalten typischerweise statisches (X)HTML Markup sowie die „Web Controls“ und „User Controls“, die gemäß der serverseitig hinterlegten Logik auf dem Webserver verarbeitet und als dynamischer (X)HTML-Code ausgegeben werden. Beispiele für Web Controls, die Microsoft standardmäßig mitliefert, sind ein Kalendercontrol oder die Gridview (Tabellenansicht von Daten).
Zusätzlich können dynamische Code-Inhalte, die vom Server ausgeführt werden sollen, innerhalb einer ASPX-Datei in der Form <% -- dynamic code -- %> hinterlegt werden. Diese Art der Einbettung ähnelt stark den Konstrukten anderer Web-Programmiersprachen wie PHP, JSP und ASP. Allerdings sollte der Entwickler möglichst auf im HTML-Code verschachtelten Programmcode verzichten, da der Compiler diesen Code erst bei Ausführung auf dem Webserver überprüft. Der Code separat verfasster „Code-Behind“-Dateien (siehe unten) wird dagegen vom Compiler vollständig überprüft, was eine höhere Laufzeitsicherheit erzielt.
Mit dem ASP.NET-Framework 2.0 veröffentlichte Microsoft den neuartigen Ansatz des „Code-Behind“-Modells. Dabei verbleiben statische Inhalte in der ASPX-Datei, während der dynamische Code in eine Datei des Typs .aspx.vb oder .aspx.cs respektive .aspx.fs ausgelagert wird. Der Dateityp ist dabei von der verwendeten .NET-Sprache abhängig. Entwickler, die nicht mit dem „Code-Behind“-Ansatz arbeiten möchten, können die Funktion Render überschreiben und sich hier (vollkommen unabhängig von der Design-Ansicht) HTML selbst erzeugen.
Code-Behind-Modell Microsoft empfiehlt die Nutzung des „Code-Behind“-Ansatzes für die dynamischen Code-Anteile. Die „Code-Behind“-Dateien tragen üblicherweise die Dateiendung .aspx.cs oder .aspx.vb. Der Dateiname der ASPX-Datei entspricht dabei stets genau dem Namen der „Code-Behind“-Datei, unterschiedlich sind nur die Dateinamenserweiterungen. Microsoft Visual Studio und andere IDEs geben diese Art der Entwicklung standardmäßig vor. Der Code einer solchen „Code-Behind“-Datei wird bereits vor Aufruf der entsprechenden Seite kompiliert. Dies senkt die Fehlerrate gegenüber Skriptsprachen, bei denen die Überprüfung auf Fehler erst zur Laufzeit stattfindet. In der „Code-Behind“-Datei hat der Entwickler die Möglichkeit, auf unterschiedlichste Ereignisse („events“) im Lebenszyklus einer ASP-Web-Forms-Web-Seite zu reagieren, darunter nicht nur z. B. das Laden der Webseite, sondern auch Ereignisse, die sich aus Benutzerinteraktionen mit Web-Formular-Inhalten ergeben, so etwa der Klick auf eine Schaltfläche.
Das Programmmodell (mit Events, die von Controls ausgelöst werden) ist dem von .NET-Applikationen sehr ähnlich, somit ist für Entwickler, die schon Applikationen für das .Net-Framework geschrieben haben, die Nutzung von ASP.NET (und C#/VB.NET) leicht möglich. Meist können für Windows-Applikationen programmierte Funktionen oder Klassen sogar ohne Änderung in ASP.NET weiterverwendet werden.
Mit diesem Ansatz unterscheidet sich ASP.NET deutlich vom klassischen ASP. Eine erste Trennung von Code zur Darstellung und den Inhalten wird dadurch erreicht. Ähnlich der Trennung zwischen „View“ und „Controller“ im MVC-Muster erlaubt diese Trennung eine bessere arbeitsteilige Entwicklung zum Beispiel durch eine Aufteilung zwischen Webdesigner, der die ASPX-Datei bearbeitet, und Programmierer, der die „Code-Behind“-Datei erstellt. Die neuere Komponente ASP.NET MVC betont konzeptionell in noch viel stärkerer Form diese Art des Separation of Concerns.
Directives Mit Directives ist es möglich, in einer ASPX-Datei zu deklarieren, wie ASP.NET diese Seite verarbeiten soll. Die am häufigsten genutzte Directive ist <%@ Page %>. Hiermit lassen sich diverse Einstellungen vornehmen, allen voran die Angabe, in welcher Programmiersprache der dynamische Inhalt programmiert ist. Beispielsweise enthält das Code-Beispiel in diesem Artikel die <%@ Page %> Directive in der ersten Zeile.
User Controls User Controls kapseln bestimmte Abschnitte aus Seiten in einer eigenen Datei mit der Endung .ascx. Diese ASCX-Dateien werden innerhalb des ASP.NET-Projekts registriert und können auf ASPX-Seiten genauso verwendet werden wie die vordefinierten „Web Controls“. Die ASCX-Dateien enthalten typischerweise (X)HTML-Code sowie serverseitige Controls. Ein „User Control“ wird kompiliert, wenn die Seite, auf der das Control eingebunden wird, aufgerufen wird. Das „User Control“ wird für mögliche nachfolgende Anfragen im Speicher gehalten. „User Controls“ bringen ihre eigenen Ereignisse („events“) mit, die ebenfalls vom Entwickler individuell behandelt werden können. Alle „User Controls“ sind daran gebunden, von einer ASPX-Seite aufgerufen zu werden. Der direkte Aufruf eines „User Controls“ im Webbrowser ist nicht möglich.
Individualisierte Controls Programmierer können selbstdefinierte Controls („Custom Controls“) in ihren ASP.NET-Webanwendungen definieren. Im Gegensatz zu „User Controls“ werden „Custom Controls“ nicht in einer ASCX-Datei definiert, sondern ihr Code wird in eine DLL-Datei kompiliert. Hat er solche „Custom Controls“ einmal definiert, kann der Entwickler diese in unterschiedlichen Webanwendungen und Visual Studio-Projekten nutzen.
Diese Möglichkeiten, eigene Controls für ASP.NET zu entwickeln, bilden die Grundlage für eine Vielzahl an Controls von Drittanbietern, die frei oder kostenpflichtig zur Verfügung stehen. Es existiert ein mittlerweile sehr umfangreicher Markt, über den eine Vielzahl von wiederverwendbaren Controls frei oder kommerziell erhältlich sind. Komplexe Anforderungen brauchen daher häufig nicht selbst entwickelt zu werden.
View State ASP.NET unterstützt mit der ViewState-Technik eine erweiterte Möglichkeit, Speicherinhalte zwischen einzelnen Seitenaufrufen zu erhalten. Während mit der Session-State-Technik bei Active-Server-Pages bisher nur eine von den Seitenaufrufen losgelöste Speicherverwaltung existierte, hat der Entwickler bei ASP.NET die Möglichkeit, Speicherinhalte in einer ViewState-Collection abzulegen, um beim nächsten Seitenaufruf darauf zuzugreifen. Im Gegensatz zum Session-State wird der ViewState nicht auf dem Server, sondern in der zurückgegebenen Seite gespeichert.
Mit der von ASP.NET unterstützten ViewState-Technik behalten Controls ihren Status auch über aufeinander folgende Seitenaufrufe hinweg. Das nimmt Entwicklern die Arbeit ab, dies selbst umzusetzen. Ein ähnliches Konzept verfolgt Sun mit den Jakarta Faces (JSF).
Code-Beispiel ASPX-Datei Der nachfolgende Beispielcode erzeugt bei Ausführung auf dem mitgelieferten Webserver von Visual Studio eine grundlegende Ausgabe am Bildschirm; diese folgt den Standardinhalten, die Visual Studio beim Anlegen einer neuen ASPX-Seite (in ASP.NET 4) generiert.
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ASP.NET_Beispiel._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent"> </asp:Content> <asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> <h2> Welcome to ASP.NET! </h2> <p> To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>. </p> <p> You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&clcid=0x409" title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>. </p> </asp:Content>
Code-Behind-Datei Zum gezeigten ASP-Code gehört der nachfolgend gezeigte Quellcode, der in der „Code-Behind“-Datei gespeichert ist. In diesem Fall kommt die Programmiersprache C# zum Einsatz, VB.NET ist dazu – wie beschrieben – eine gängige Alternative.
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls;
namespace ASP.NET_Beispiel { public partial class _Default : System.Web.UI.Page
protected void Page_Load(object sender, EventArgs e)
Autogenerierte .designer.cs-Datei Ebenfalls anhand der ASPX-Vorlage wird eine Datei namens Default.aspx.designer.cs erzeugt. Da der Programmierer diese Datei nicht ändern soll (weil seine Änderungen bei der nächsten Generierung überschrieben würden), ist deren Quelltext hier nicht gezeigt.
Andere Bestandteile ASP.NET bietet das Konzept der Webparts. Mit diesen können Intranets erstellt werden, in denen jeder Benutzer selbst konfiguriert, was er an welcher Stelle der Seite sehen will. ASP.NET AJAX ist ein Teil von ASP.NET, mit dem sich Ajax-Webseiten unter ASP.NET entwickeln lassen. Er umfasst Klassenbibliotheken und Steuerelemente. ASP.NET Webservices ist ein Teil-Framework zum Entwickeln von Webservices auf Basis der Standards SOAP, WSDL und XSD. Es erschien erstmals als Teil von .Net-Framework 2.0. Entsprechend der Dateinamenserweiterung von solchen Webservices wird ASP.NET Webservices auch als ASMX bezeichnet.Jürgen Mauerer: Web Services mit .NET Framework 2.0 und Visual Studio 2005. In: MSDN vom 17. Juni 2005, abgerufen am 2. Dezember 2015. ASP.NET Web Pages sind eine Alternative zu Web Forms und MVC. ASP.NET MVC ist ebenfalls eine Alternative zu Web Forms und Web Pages. ASP.NET Web API ASP.NET SignalR ASP.NET Dynamic Data ist ein auf Web Forms basierendes Framework zur Erstellung von Webanwendungen, das zur Laufzeit automatisch das zugrunde liegende Datenmodell ermittelt und basierend darauf das Verhalten der Benutzeroberfläche festlegt. Es ist nur ein verhältnismäßig geringer Programmieraufwand erforderlich.Übersicht über ASP.NET Dynamic Data. In: MSDN, abgerufen am 2. Dezember 2015.
SOAP Extensions