OWIN를 사용 하 여 자체 호스트 ASP.NET Web APIUse OWIN to Self-Host ASP.NET Web API

이 자습서에서는 OWIN를 사용 하 여 Web API 프레임 워크를 자체 호스트 하는 콘솔 응용 프로그램에서 ASP.NET Web API를 호스트 하는 방법을 보여 줍니다.This tutorial shows how to host ASP.NET Web API in a console application, using OWIN to self-host the Web API framework.

OWIN ( Open Web Interface for .net )는 .net 웹 서버와 웹 응용 프로그램 간의 추상화를 정의 합니다.Open Web Interface for .NET (OWIN) defines an abstraction between .NET web servers and web applications. OWIN는 서버에서 웹 응용 프로그램을 분리 IIS 외부의 자체 프로세스에서 웹 응용 프로그램을 자체 호스트 하는 데 적합 합니다.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.

자습서에서 사용 되는 소프트웨어 버전Software versions used in the tutorial

Note

Github.com/aspnet/samples에서이 자습서에 대 한 전체 소스 코드를 찾을 수 있습니다.You can find the complete source code for this tutorial at github.com/aspnet/samples.

콘솔 애플리케이션 만들기Create a console application

파일 메뉴에서 새로 만들기를 선택한 다음 프로젝트를 선택 합니다.On the File menu, New, then select Project. 설치 됨시각적 개체 C# 에서 Windows 데스크톱 을 선택한 다음 콘솔 앱 (.net Framework) 을 선택 합니다.From Installed, under Visual C#, select Windows Desktop and then select Console App (.Net Framework). 프로젝트 이름을 "OwinSelfhostSample"로 선택 하 고 확인을선택 합니다.Name the project "OwinSelfhostSample" and select OK.

Web API 및 OWIN 패키지 추가Add the Web API and OWIN packages

도구 메뉴에서 NuGet 패키지 관리자를 선택한 다음 패키지 관리자 콘솔을 선택 합니다.From the Tools menu, select NuGet Package Manager, then select Package Manager Console. 패키지 관리자 콘솔 창에서 다음 명령을 입력합니다.In the Package Manager Console window, enter the following command:

Install-Package Microsoft.AspNet.WebApi.OwinSelfHost

그러면 WebAPI OWIN selfhost 패키지와 필요한 모든 OWIN 패키지가 설치 됩니다.This will install the WebAPI OWIN selfhost package and all the required OWIN packages.

자체 호스트에 대 한 Web API 구성Configure Web API for self-host

솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭 하 고 / 클래스 추가 를 선택 하 여 새 클래스를 추가 합니다.In Solution Explorer, right-click the project and select Add / Class to add a new class. 클래스 Startup 이름을 지정합니다.Name the class Startup.

이 파일의 모든 상용구 코드를 다음으로 바꿉니다.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 컨트롤러 추가Add a Web API controller

그런 다음 웹 API 컨트롤러 클래스를 추가 합니다.Next, add a Web API controller class. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭 하 고 / 클래스 추가 를 선택 하 여 새 클래스를 추가 합니다.In Solution Explorer, right-click the project and select Add / Class to add a new class. 클래스 ValuesController 이름을 지정합니다.Name the class ValuesController.

이 파일의 모든 상용구 코드를 다음으로 바꿉니다.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) 
        { 
        } 
    } 
}

OWIN 호스트를 시작 하 고 HttpClient를 사용 하 여 요청 만들기Start the OWIN Host and make a request with HttpClient

Program.cs 파일의 모든 상용구 코드를 다음으로 바꿉니다.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(); 
            } 
        } 
    } 
 }

애플리케이션 실행Run the application

응용 프로그램을 실행 하려면 Visual Studio에서 F5 키를 누릅니다.To run the application, press F5 in Visual Studio. 출력은 다음과 비슷합니다.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"]

추가 리소스Additional resources

프로젝트 Katana 개요An Overview of Project Katana

Azure 작업자 역할의 호스트 ASP.NET Web APIHost ASP.NET Web API in an Azure Worker Role