OWIN을 사용하여 Self-Host ASP.NET Web API
이 자습서에서는 OWIN을 사용하여 Web API 프레임워크를 자체 호스팅하는 콘솔 애플리케이션에서 ASP.NET Web API 호스트하는 방법을 보여 줍니다.
OWIN(Open Web Interface for .NET)은 .NET 웹 서버와 웹 애플리케이션 간의 추상화 를 정의합니다. OWIN은 서버에서 웹 애플리케이션을 분리하므로 OWIN은 IIS 외부에서 사용자 고유의 프로세스에서 웹 애플리케이션을 자체 호스팅하는 데 이상적입니다.
자습서에서 사용되는 소프트웨어 버전
- Visual Studio 2017
- Web API 5.2.7
참고
이 자습서의 전체 소스 코드는 github.com/aspnet/samples 찾을 수 있습니다.
콘솔 애플리케이션 만들기
파일 메뉴의 새로 만들기에서 프로젝트를 선택합니다. 설치됨의 Visual C#에서 Windows 데스크톱을 선택한 다음 콘솔 앱(.Net Framework)을 선택합니다. 프로젝트의 이름을 "OwinSelfhostSample"로 지정하고 확인을 선택합니다.
Web API 및 OWIN 패키지 추가
도구 메뉴에서 NuGet 패키지 관리자를 선택한 다음 패키지 관리자 콘솔을 선택합니다. 패키지 관리자 콘솔 창에서 다음 명령을 입력합니다.
Install-Package Microsoft.AspNet.WebApi.OwinSelfHost
그러면 WebAPI OWIN 셀프 호스트 패키지와 필요한 모든 OWIN 패키지가 설치됩니다.
자체 호스트에 대한 Web API 구성
솔루션 탐색기 프로젝트를 마우스 오른쪽 단추로 클릭하고클래스추가 / 를 선택하여 새 클래스를 추가합니다. 클래스 Startup
이름을 지정합니다.
이 파일의 모든 상용구 코드를 다음으로 바꿉다.
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 컨트롤러 추가
다음으로, Web API 컨트롤러 클래스를 추가합니다. 솔루션 탐색기 프로젝트를 마우스 오른쪽 단추로 클릭하고클래스추가 / 를 선택하여 새 클래스를 추가합니다. 클래스 ValuesController
이름을 지정합니다.
이 파일의 모든 상용구 코드를 다음으로 바꿉다.
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를 사용하여 요청
Program.cs 파일의 모든 상용구 코드를 다음으로 바꿉니다.
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();
}
}
}
}
애플리케이션 실행
애플리케이션을 실행하려면 Visual Studio에서 F5 키를 누릅니다. 출력은 다음과 비슷합니다.
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"]