Utiliser OWIN pour Self-Host API Web ASP.NET
Ce tutoriel montre comment héberger des API Web ASP.NET dans une application console, à l’aide d’OWIN pour héberger automatiquement l’infrastructure d’API web.
Open Web Interface for .NET (OWIN) définit une abstraction entre les serveurs web .NET et les applications web. OWIN dissocie l’application web du serveur, ce qui rend OWIN idéal pour auto-héberger une application web dans votre propre processus, en dehors d’IIS.
Versions logicielles utilisées dans le tutoriel
- Visual Studio 2017
- API web 5.2.7
Notes
Vous trouverez le code source complet de ce didacticiel sur github.com/aspnet/samples.
Création d’une application console
Dans le menu Fichier , Nouveau, puis sélectionnez Projet. Dans Installé, sous Visual C#, sélectionnez Bureau Windows, puis Application console (.Net Framework). Nommez le projet « OwinSelfhostSample » et sélectionnez OK.
Ajouter les packages API web et OWIN
Dans le menu Outils , sélectionnez Gestionnaire de package NuGet, puis console du gestionnaire de package. Dans la fenêtre Console du Gestionnaire de package, entrez la commande suivante :
Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
Cela installe le package auto-hôte WebAPI OWIN et tous les packages OWIN requis.
Configurer l’API web pour l’auto-hôte
Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet et sélectionnez Ajouter une / classe pour ajouter une nouvelle classe. Nommez la classe Startup
.
Remplacez tout le code réutilisable de ce fichier par les éléments suivants :
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);
}
}
}
Ajouter un contrôleur d’API web
Ensuite, ajoutez une classe de contrôleur d’API web. Dans Explorateur de solutions, cliquez avec le bouton droit sur le projet et sélectionnez Ajouter une / classe pour ajouter une nouvelle classe. Nommez la classe ValuesController
.
Remplacez tout le code réutilisable de ce fichier par les éléments suivants :
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)
{
}
}
}
Démarrez l’hôte OWIN et effectuez une requête avec HttpClient
Remplacez tout le code réutilisable dans le fichier Program.cs par ce qui suit :
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();
}
}
}
}
Exécution de l'application
Pour exécuter l’application, appuyez sur F5 dans Visual Studio. La sortie doit se présenter comme suit :
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"]