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 Lernprogramm wird gezeigt, 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, was OWIN ideal für das Selbsthosting einer Webanwendung in Ihrem eigenen Prozess außerhalb von IIS macht.
Im Lernprogramm verwendete Softwareversionen
- Visual Studio 2017
- Web-API 5.2.7
Hinweis
Den vollständigen Quellcode für dieses Lernprogramm finden Sie unter github.com/aspnet/samples.
Erstellen einer Konsolenanwendung
Wählen Sie im Menü "Datei" "Neu" die Option "Projekt" aus. Wählen Sie unter Visual C# unter "Installiert" 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 Paket-Manager-Konsolenfenster den folgenden Befehl ein:
Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
Dadurch wird das WebAPI OWIN Selfhost-Paket und alle erforderlichen OWIN-Pakete installiert.
Konfigurieren der Web-API für Self-Host
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie "Klasse / " aus, um eine neue Klasse hinzuzufügen. Benennen Sie die Klasse Startup.
Ersetzen Sie den gesamten Codebaustein 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 im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt, und wählen Sie "Klasse / " aus, um eine neue Klasse hinzuzufügen. Benennen Sie die Klasse ValuesController.
Ersetzen Sie den gesamten Codebaustein 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 Codebaustein in der Program.cs Datei 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"]