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

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.

Capture d’écran de la boîte de dialogue « créer un projet », montrant les options de menu pour sélectionner Windows Desktop, puis Application console dans la liste déroulante.

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.

Capture d’écran de la console du gestionnaire de package, montrant les informations de licence, suivie de P M > à la fin, indiquant où taper la commande.

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.

Capture d’écran du menu de la boîte de dialogue Explorateur de solutions, montrant les étapes à suivre pour ajouter une classe au projet.

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"]

Capture d’écran de la console, montrant le code et les informations status pour l’application en cours d’exécution.

Ressources supplémentaires

Vue d’ensemble du projet Katana

Hôte API Web ASP.NET dans un rôle de travail Azure