Erste Schritte mit OWIN und Katana
Open Web Interface for .NET (OWIN) definiert eine Abstraktion zwischen .NET-Webservern und Webanwendungen. Durch entkoppeln des Webservers von der Anwendung erleichtert OWIN die Erstellung von Middleware für die .NET-Webentwicklung. Darüber hinaus erleichtert OWIN das Portieren von Webanwendungen auf andere Hosts, z. B. das Selbsthosting in einem Windows-Dienst oder einem anderen Prozess.
OWIN ist eine communityeigene Spezifikation, keine Implementierung. Das Katana-Projekt besteht aus einer Reihe von Open-Source-OWIN-Komponenten, die von Microsoft entwickelt wurden. Eine allgemeine Übersicht über OWIN und Katana finden Sie unter Übersicht über Project Katana. In diesem Artikel werde ich direkt in den Code springen, um zu beginnen.
In diesem Tutorial wird Visual Studio 2013 Release Candidate verwendet, Sie können aber auch Visual Studio 2012 verwenden. Einige der Schritte unterscheiden sich in Visual Studio 2012, was ich unten anmerke.
Hosten von OWIN in IIS
In diesem Abschnitt hosten wir OWIN in IIS. Diese Option bietet Ihnen die Flexibilität und Zusammensetzbarkeit einer OWIN-Pipeline zusammen mit dem ausgereiften Featuresatz von IIS. Mit dieser Option wird die OWIN-Anwendung in der ASP.NET-Anforderungspipeline ausgeführt.
Erstellen Sie zunächst ein neues ASP.NET-Webanwendungsprojekt. (Verwenden Sie in Visual Studio 2012 den Projekttyp ASP.NET Leere Webanwendung.)
Wählen Sie im Dialogfeld Neues ASP.NET Projekt die Vorlage Leer aus.
Hinzufügen von NuGet-Paketen
Fügen Sie als Nächstes die erforderlichen NuGet-Pakete hinzu. Wählen Sie im Menü Extras die Option NuGet-Paket-Manager und dann Paket-Manager-Konsole aus. Geben Sie im Fenster Paket-Manager-Konsole den folgenden Befehl ein:
install-package Microsoft.Owin.Host.SystemWeb –Pre
Hinzufügen einer Startklasse
Fügen Sie als Nächstes eine OWIN-Startklasse hinzu. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie Hinzufügen und dann Neues Element aus. Wählen Sie im Dialogfeld Neues Element hinzufügen die Option Owin-Startklasse aus. Weitere Informationen zum Konfigurieren der Startklasse finden Sie unter OWIN-Startklassenerkennung.
Fügen Sie der Startup1.Configuration
-Methode folgenden Code hinzu:
public void Configuration(IAppBuilder app)
{
// New code:
app.Run(context =>
{
context.Response.ContentType = "text/plain";
return context.Response.WriteAsync("Hello, world.");
});
}
Dieser Code fügt der OWIN-Pipeline eine einfache Middleware hinzu, die als Funktion implementiert wird, die eine Microsoft.Owin.IOwinContext-instance empfängt. Wenn der Server eine HTTP-Anforderung empfängt, ruft die OWIN-Pipeline die Middleware auf. Die Middleware legt den Inhaltstyp für die Antwort fest und schreibt den Antworttext.
Hinweis
Die OWIN-Startklassenvorlage ist in Visual Studio 2013 verfügbar. Wenn Sie Visual Studio 2012 verwenden, fügen Sie einfach eine neue leere Klasse mit dem Namen hinzu Startup1
, und fügen Sie den folgenden Code ein:
using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(OwinApp.Startup1))]
namespace OwinApp
{
public class Startup1
{
public void Configuration(IAppBuilder app)
{
app.Run(context =>
{
context.Response.ContentType = "text/plain";
return context.Response.WriteAsync("Hello, world.");
});
}
}
}
Ausführen der Anwendung
Drücken Sie F5, um mit das Debuggen zu starten. Visual Studio öffnet ein Browserfenster für http://localhost:*port*/
. Die Seite sollte wie folgt aussehen:
Self-Host von OWIN in einer Konsolenanwendung
Es ist einfach, diese Anwendung in einem benutzerdefinierten Prozess vom IIS-Hosting in das Selbsthosting zu konvertieren. Beim IIS-Hosting fungiert IIS sowohl als HTTP-Server als auch als Der Prozess, der den Dienst hostet. Beim Selfhosting erstellt Ihre Anwendung den Prozess und verwendet die HttpListener-Klasse als HTTP-Server.
Erstellen Sie in Visual Studio eine neue Konsolenanwendung. Geben Sie im Fenster Paket-Manager-Konsole den folgenden Befehl ein:
Install-Package Microsoft.Owin.SelfHost -Pre
Fügen Sie dem Projekt eine Startup1
Klasse aus Teil 1 dieses Tutorials hinzu. Sie müssen diese Klasse nicht ändern.
Implementieren Sie die -Methode der Main
Anwendung wie folgt.
class Program
{
static void Main(string[] args)
{
using (Microsoft.Owin.Hosting.WebApp.Start<Startup1>("http://localhost:9000"))
{
Console.WriteLine("Press [enter] to quit...");
Console.ReadLine();
}
}
}
Wenn Sie die Konsolenanwendung ausführen, beginnt der Server mit dem Lauschen von http://localhost:9000
. Wenn Sie in einem Webbrowser zu dieser Adresse navigieren, wird die Seite "Hallo Welt" angezeigt.
Hinzufügen der OWIN-Diagnose
Das Microsoft.Owin.Diagnostics-Paket enthält Middleware, die nicht behandelte Ausnahmen abfängt und eine HTML-Seite mit Fehlerdetails anzeigt. Diese Seite funktioniert ähnlich wie die ASP.NET Fehlerseite, die manchmal als "gelber Bildschirm des Todes" (YSOD) bezeichnet wird. Wie das YSOD ist die Katana-Fehlerseite während der Entwicklung nützlich, aber es ist eine bewährte Methode, sie im Produktionsmodus zu deaktivieren.
Um das Diagnosepaket in Ihrem Projekt zu installieren, geben Sie den folgenden Befehl im Fenster Paket-Manager-Konsole ein:
install-package Microsoft.Owin.Diagnostics –Pre
Ändern Sie den Code in Ihrer Startup1.Configuration
-Methode wie folgt:
public void Configuration(IAppBuilder app)
{
// New code: Add the error page middleware to the pipeline.
app.UseErrorPage();
app.Run(context =>
{
// New code: Throw an exception for this URI path.
if (context.Request.Path.Equals(new PathString("/fail")))
{
throw new Exception("Random exception");
}
context.Response.ContentType = "text/plain";
return context.Response.WriteAsync("Hello, world.");
});
}
Verwenden Sie nun STRG+F5, um die Anwendung ohne Debuggen auszuführen, damit Visual Studio bei der Ausnahme nicht unterbrochen wird. Die Anwendung verhält sich wie zuvor, bis Sie zu http://localhost/fail
navigieren. An diesem Punkt löst die Anwendung die Ausnahme aus. Die Fehlerseitenmiddleware fängt die Ausnahme ab und zeigt eine HTML-Seite mit Informationen zum Fehler an. Sie können auf die Registerkarten klicken, um den Stapel, die Abfragezeichenfolge, Cookies, den Anforderungsheader und die OWIN-Umgebungsvariablen anzuzeigen.
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für