Bagikan melalui


Menggunakan OWIN untuk Self-Host ASP.NET Web API

Tutorial ini menunjukkan cara menghosting ASP.NET Web API dalam aplikasi konsol, menggunakan OWIN untuk menghost sendiri kerangka kerja WEB API.

Open Web Interface for .NET (OWIN) mendefinisikan abstraksi antara server web .NET dan aplikasi web. OWIN memisahkan aplikasi web dari server, yang membuat OWIN ideal untuk menghosting sendiri aplikasi web dalam proses Anda sendiri, di luar IIS.

Versi perangkat lunak yang digunakan dalam tutorial

Catatan

Anda dapat menemukan kode sumber lengkap untuk tutorial ini di github.com/aspnet/samples.

Membuat aplikasi konsol

Pada menu File , Baru, lalu pilih Proyek. Dari Terinstal, di bawah Visual C#, pilih Desktop Windows lalu pilih Aplikasi Konsol (.Net Framework). Beri nama proyek "OwinSelfhostSample" dan pilih OK.

Cuplikan layar kotak dialog 'buat proyek baru', memperlihatkan opsi menu untuk memilih Windows Desktop lalu Aplikasi Konsol dari daftar dropdown.

Menambahkan paket Web API dan OWIN

Dari menu Alat , pilih Manajer Paket NuGet, lalu pilih Konsol Manajer Paket. Di jendela Konsol Manajer Paket, masukkan perintah berikut:

Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

Ini akan menginstal paket selfhost WebAPI OWIN dan semua paket OWIN yang diperlukan.

Cuplikan layar konsol manajer paket, memperlihatkan informasi lisensi, diikuti oleh P M > di akhir, menandakan tempat mengetik perintah.

Mengonfigurasi API Web untuk host mandiri

Di Penjelajah Solusi, klik kanan proyek dan pilih Tambahkan / Kelas untuk menambahkan kelas baru. Beri nama kelas Startup.

Cuplikan layar menu kotak dialog penjelajah solusi, memperlihatkan langkah-langkah yang harus diikuti untuk menambahkan kelas ke proyek.

Ganti semua kode boilerplate dalam file ini dengan yang berikut:

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

Menambahkan pengontrol API Web

Selanjutnya, tambahkan kelas pengontrol API Web. Di Penjelajah Solusi, klik kanan proyek dan pilih Tambahkan / Kelas untuk menambahkan kelas baru. Beri nama kelas ValuesController.

Ganti semua kode boilerplate dalam file ini dengan yang berikut:

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

Mulai Host OWIN dan buat permintaan dengan HttpClient

Ganti semua kode boilerplate dalam file Program.cs dengan yang berikut:

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

Menjalankan aplikasi

Untuk menjalankan aplikasi, tekan F5 di Visual Studio. Output akan terlihat seperti berikut ini:

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

Cuplikan layar konsol, memperlihatkan kode status dan informasi untuk aplikasi saat sedang berjalan.

Sumber Daya Tambahan:

Gambaran Umum Project Katana

Host ASP.NET Web API dalam Peran Pekerja Azure