Aracılığıyla paylaş


Web API'sini Self-Host ASP.NET için OWIN kullanma

Bu öğreticide, Web API çerçevesini kendi kendine barındırmak için OWIN kullanarak bir konsol uygulamasında ASP.NET Web API'sini barındırma gösterilmektedir.

.NET için Açık Web Arabirimi (OWIN), .NET web sunucuları ve web uygulamaları arasında bir soyutlama tanımlar. OWIN, web uygulamasını sunucudan ayrıştırarak OWIN'in iis dışında kendi işleminizde bir web uygulaması barındırmak için ideal olmasını sağlar.

Öğreticide kullanılan yazılım sürümleri

Not

Bu öğreticinin kaynak kodunun tamamını github.com/aspnet/samples adresinde bulabilirsiniz.

Konsol uygulaması oluşturma

Dosya menüsünde Yeni'yi ve ardından Proje'yi seçin. Yüklü'denVisual C# altında Windows Masaüstü'nü ve ardından Konsol Uygulaması (.Net Framework)'ü seçin. Projeyi "OwinSelfhostSample" olarak adlandırın ve Tamam'ı seçin.

Açılan listeden Windows Masaüstü'nü ve konsol uygulamasını seçmek için menü seçeneklerini gösteren 'yeni proje oluştur' iletişim kutusunun ekran görüntüsü.

Web API'sini ve OWIN paketlerini ekleme

Araçlar menüsünde NuGet Paket Yöneticisi'ni ve ardından Paket Yöneticisi Konsolu'nu seçin. Paket Yöneticisi Konsolu penceresinde aşağıdaki komutu girin:

Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

Bu, WebAPI OWIN selfhost paketini ve gerekli tüm OWIN paketlerini yükler.

Lisans bilgilerini gösteren paket yöneticisi konsolunun ekran görüntüsü, sonunda P M > ve komutun nereye yazılması için sinyal veriyor.

Kendi kendine konak için Web API'sini yapılandırma

Çözüm Gezgini'da projeye sağ tıklayın ve Yeni sınıf eklemek içinSınıfEkle'yi / seçin. sınıfını Startupadlandırın.

Projeye sınıf eklemek için izleyebileceğiniz adımları gösteren çözüm gezgini iletişim kutusu menüsünün ekran görüntüsü.

Bu dosyadaki tüm ortak kodu aşağıdakilerle değiştirin:

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

Web API denetleyicisi ekleme

Ardından, bir Web API denetleyicisi sınıfı ekleyin. Çözüm Gezgini'da projeye sağ tıklayın ve Yeni sınıf eklemek içinSınıfEkle'yi / seçin. sınıfını ValuesControlleradlandırın.

Bu dosyadaki tüm ortak kodu aşağıdakilerle değiştirin:

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

OWIN Konağı'nı başlatın ve HttpClient ile istekte bulunın

Program.cs dosyasındaki tüm ortak kodu aşağıdakilerle değiştirin:

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

Uygulamayı çalıştırma

Uygulamayı çalıştırmak için Visual Studio'da F5 tuşuna basın. Çıktı aşağıdaki gibi görünmelidir:

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

Uygulamanın çalışır durumdaki durum kodunu ve bilgilerini gösteren konsolun ekran görüntüsü.

Ek kaynaklar

Project Katana’ya Genel Bakış

Azure Çalışan Rolünde ASP.NET Web API'si barındırma