Condividi tramite


Usare OWIN per Self-Host API Web ASP.NET

Questa esercitazione illustra come ospitare API Web ASP.NET in un'applicazione console, usando OWIN per ospitare autonomamente il framework API Web.

Open Web Interface for .NET (OWIN) definisce un'astrazione tra i server Web .NET e le applicazioni Web. OWIN separa l'applicazione Web dal server, che rende OWIN ideale per l'self-hosting di un'applicazione Web nel proprio processo, all'esterno di IIS.

Versioni software usate nell'esercitazione

Nota

È possibile trovare il codice sorgente completo per questa esercitazione in github.com/aspnet/samples.

Creare un'applicazione console

Scegliere Progetto dal menu File, Nuovo. In Installato, in Visual C#, selezionare Desktop di Windows e quindi App console (.Net Framework). Assegnare al progetto il nome "OwinSelfhostSample" e selezionare OK.

Screenshot della finestra di dialogo

Aggiungere l'API Web e i pacchetti OWIN

Dal menu Strumenti selezionare Gestione pacchetti NuGet e quindi console di Gestione pacchetti. Nella finestra Console di gestione pacchetti immettere il comando seguente:

Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

Verrà installato il pacchetto selfhost OWIN WebAPI e tutti i pacchetti OWIN necessari.

Screenshot della console di gestione pacchetti, che mostra le informazioni sulle licenze, seguite da P M > alla fine, segnalando dove digitare il comando.

Configurare l'API Web per l'self-host

In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Aggiungi / classe per aggiungere una nuova classe. Denominare la classe Startup.

Screenshot del menu della finestra di dialogo Esplora soluzioni, che mostra i passaggi da seguire per aggiungere una classe al progetto.

Sostituire tutto il codice boilerplate in questo file con quanto segue:

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); 
        } 
    } 
}

Aggiungere un controller API Web

Aggiungere quindi una classe controller API Web. In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Aggiungi / classe per aggiungere una nuova classe. Denominare la classe ValuesController.

Sostituire tutto il codice boilerplate in questo file con quanto segue:

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) 
        { 
        } 
    } 
}

Avviare l'host OWIN ed effettuare una richiesta con HttpClient

Sostituire tutto il codice boilerplate nel file Program.cs con quanto segue:

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(); 
            } 
        } 
    } 
 }

Eseguire l'applicazione

Per eseguire l'applicazione, premere F5 in Visual Studio. L'output sarà simile al seguente:

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

Screenshot della console, che mostra il codice di stato e le informazioni per l'applicazione durante l'esecuzione.

Risorse aggiuntive

Panoramica del progetto Katana

Ospitare API Web ASP.NET in un ruolo di lavoro di Azure