Condividi tramite


Usare OWIN per ospitare localmente l'API Web ASP.NET

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

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

Versioni software usate nell'esercitazione

Annotazioni

Il codice sorgente completo per questa esercitazione è disponibile in github.com/aspnet/samples.

Creare un'applicazione console

Nel menu File , Nuovo, quindi selezionare Progetto. In Installato, sotto Visual C# seleziona Desktop di Windows e quindi seleziona Console App (.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, seguita da P M > alla fine, segnalando dove digitare il comando.

Configurare l'API Web per l'host autonomo

In Esplora soluzioni fare clic con il pulsante destro del mouse sul progetto e scegliere Aggiungi / classe per aggiungere una nuova classe. Assegnare alla classe Startupil nome .

Screenshot del menu della finestra di dialogo Esplora soluzioni, che mostra i passaggi da seguire per l'aggiunta di 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. Assegnare alla classe ValuesControlleril nome .

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 il codice seguente:

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 dovrebbe essere 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 di Project Katana

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