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.

Open Web Interface for.NET (OWIN).NET 웹 서버 및 웹 응용 프로그램 간의 추상화를 정의 합니다.Open Web Interface for .NET (OWIN) defines an abstraction between .NET web servers and web applications. OWIN 이상적인 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. 설치 됨아래에 있는 Visual C# 선택 Windows Desktop 선택한 후 콘솔 앱 (.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

다음으로, Web 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 HttpCient 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 API 호스팅Host ASP.NET Web API in an Azure Worker Role