Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Tutorial erfahren Sie, wie Sie ASP.NET-Web-API in einer Konsolenanwendung mit OWIN hosten, um das Web-API-Framework selbst zu hosten.
Open Web Interface for .NET (OWIN) definiert eine Abstraktion zwischen .NET-Webservern und Webanwendungen. OWIN entkoppelt die Webanwendung vom Server, wodurch OWIN ideal für das Selbsthosting einer Webanwendung in Ihrem eigenen Prozess außerhalb von IIS ist.
Im Tutorial verwendete Softwareversionen
- Visual Studio 2017
- Web-API 5.2.7
Hinweis
Den vollständigen Quellcode für dieses Tutorial finden Sie unter github.com/aspnet/samples.
Erstellen einer Konsolenanwendung
Wählen Sie im Menü Datei die Option Neu aus, und wählen Sie dann Projekt aus. Wählen Sie unter Installiert unter Visual C#die Option Windows Desktop und dann Konsolen-App (.Net Framework) aus. Nennen Sie das Projekt "OwinSelfhostSample", und wählen Sie OK aus.
Hinzufügen der Web-API- und OWIN-Pakete
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.AspNet.WebApi.OwinSelfHost
Dadurch werden das WebAPI OWIN Selfhost-Paket und alle erforderlichen OWIN-Pakete installiert.
Konfigurieren der Web-API für den Selbsthost
Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen SieKlassehinzufügen / aus, um eine neue Klasse hinzuzufügen. Geben Sie der Klassen den Namen Startup
.
Ersetzen Sie den gesamten Code der Bausteine in dieser Datei durch Folgendes:
using Owin;
using System.Web.Http;
namespace OwinSelfhostSample
{
public class Startup
{
// This code configures Web API. The Startup class is specified as a type
// parameter in the WebApp.Start method.
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
}
}
}
Hinzufügen eines Web-API-Controllers
Fügen Sie als Nächstes eine Web-API-Controllerklasse hinzu. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen SieKlassehinzufügen / aus, um eine neue Klasse hinzuzufügen. Geben Sie der Klassen den Namen ValuesController
.
Ersetzen Sie den gesamten Code der Bausteine in dieser Datei durch Folgendes:
using System.Collections.Generic;
using System.Web.Http;
namespace OwinSelfhostSample
{
public class ValuesController : ApiController
{
// GET api/values
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
// GET api/values/5
public string Get(int id)
{
return "value";
}
// POST api/values
public void Post([FromBody]string value)
{
}
// PUT api/values/5
public void Put(int id, [FromBody]string value)
{
}
// DELETE api/values/5
public void Delete(int id)
{
}
}
}
Starten Sie den OWIN-Host, und stellen Sie eine Anforderung mit HttpClient.
Ersetzen Sie den gesamten Code der Codebausteine in der Datei Program.cs durch Folgendes:
using Microsoft.Owin.Hosting;
using System;
using System.Net.Http;
namespace OwinSelfhostSample
{
public class Program
{
static void Main()
{
string baseAddress = "http://localhost:9000/";
// Start OWIN host
using (WebApp.Start<Startup>(url: baseAddress))
{
// Create HttpClient and make a request to api/values
HttpClient client = new HttpClient();
var response = client.GetAsync(baseAddress + "api/values").Result;
Console.WriteLine(response);
Console.WriteLine(response.Content.ReadAsStringAsync().Result);
Console.ReadLine();
}
}
}
}
Ausführen der Anwendung
Drücken Sie F5 in Visual Studio, um die Anwendung auszuführen. Die Ausgabe sollte wie folgt aussehen:
StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
Date: Tue, 09 Jul 2013 18:10:15 GMT
Server: Microsoft-HTTPAPI/2.0
Content-Length: 19
Content-Type: application/json; charset=utf-8
}
["value1","value2"]