OWıN kullanarak Self-Host ASP.NET Web API 'SIUse OWIN to Self-Host ASP.NET Web API

Bu öğreticide, Web API çerçevesini Self barındırmak için OWIN kullanarak bir konsol uygulamasında ASP.NET Web API 'sinin nasıl barındıralınacağını gösterilmektedir.This tutorial shows how to host ASP.NET Web API in a console application, using OWIN to self-host the Web API framework.

.Net Için açık Web arabirimi (owın), .NET Web sunucuları ile Web uygulamaları arasında bir soyutlama tanımlar.Open Web Interface for .NET (OWIN) defines an abstraction between .NET web servers and web applications. OWIN, Web uygulamasını sunucusundan ayırır, bu da bir Web uygulamasını kendi işleminizde IIS dışında bir Web uygulaması barındırmak için ideal hale getirir.OWIN decouples the web application from the server, which makes OWIN ideal for self-hosting a web application in your own process, outside of IIS.

Öğreticide kullanılan yazılım sürümleriSoftware versions used in the tutorial

Note

Bu öğreticinin tüm kaynak kodunu GitHub.com/ASPNET/Samplesadresinden bulabilirsiniz.You can find the complete source code for this tutorial at github.com/aspnet/samples.

Konsol uygulaması oluşturmaCreate a console application

Dosya menüsünde Yeni' ye ve ardından Proje' yi seçin.On the File menu, New, then select Project. Yüklü, Visual C# altında, Windows Masaüstü ' nü seçin ve konsol uygulaması (.NET Framework) öğesini seçin.From Installed, under Visual C#, select Windows Desktop and then select Console App (.Net Framework). Projeyi "Owınselfhostsample" olarak adlandırın ve Tamam' ı seçin.Name the project "OwinSelfhostSample" and select OK.

Web API 'sini ve OWIN paketlerini ekleyinAdd the Web API and OWIN packages

Araçlar menüsünde NuGet Paket Yöneticisi' ni ve ardından Paket Yöneticisi konsolu' nu seçin.From the Tools menu, select NuGet Package Manager, then select Package Manager Console. Paket Yöneticisi konsolu penceresinde, aşağıdaki komutu girin:In the Package Manager Console window, enter the following command:

Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

Bu işlem, WebAPI OWıN Selfhost paketini ve tüm gerekli OWIN paketlerini yükler.This will install the WebAPI OWIN selfhost package and all the required OWIN packages.

Self-Host için Web API 'YI yapılandırmaConfigure Web API for self-host

Çözüm Gezgini, projeye sağ tıklayın ve yeni bir sınıf eklemek için / sınıfı Ekle ' yi seçin.In Solution Explorer, right-click the project and select Add / Class to add a new class. Startupsınıfı adlandırın.Name the class Startup.

Bu dosyadaki tüm ortak kodu aşağıdaki kodla değiştirin:Replace all of the boilerplate code in this file with the following:

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 eklemeAdd a Web API controller

Sonra, bir Web API denetleyici sınıfı ekleyin.Next, add a Web API controller class. Çözüm Gezgini, projeye sağ tıklayın ve yeni bir sınıf eklemek için / sınıfı Ekle ' yi seçin.In Solution Explorer, right-click the project and select Add / Class to add a new class. ValuesControllersınıfı adlandırın.Name the class ValuesController.

Bu dosyadaki tüm ortak kodu aşağıdaki kodla değiştirin:Replace all of the boilerplate code in this file with the following:

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

OWıN konağını başlatın ve HttpClient ile bir istek yapınStart the OWIN Host and make a request with HttpClient

Program.cs dosyasındaki tüm ortak kodu aşağıdaki kodla değiştirin:Replace all of the boilerplate code in the Program.cs file with the following:

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ırmaRun the application

Uygulamayı çalıştırmak için, Visual Studio 'da F5 tuşuna basın.To run the application, press F5 in Visual Studio. Çıktı aşağıdaki gibi görünmelidir:The output should look like the following:

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

Ek kaynaklarAdditional resources

Project Katana’ya Genel BakışAn Overview of Project Katana

Azure çalışan rolünde konak ASP.NET Web API 'SIHost ASP.NET Web API in an Azure Worker Role