다음을 통해 공유


ASP.NET MVC 4 사용자 지정 작업 필터

웹 캠프 팀별

웹 캠프 교육 키트 다운로드

ASP.NET MVC는 작업 메서드가 호출되기 전이나 후에 필터링 논리를 실행하기 위한 작업 필터를 제공합니다. 작업 필터는 컨트롤러의 작업 메서드에 사전 작업 및 사후 작업 동작을 추가하는 선언적 수단을 제공하는 사용자 지정 특성입니다.

이 실습 랩에서는 MvcMusicStore 솔루션에 사용자 지정 작업 필터 특성을 만들어 컨트롤러의 요청을 catch하고 사이트의 활동을 데이터베이스 테이블에 기록합니다. 컨트롤러 또는 작업에 삽입하여 로깅 필터를 추가할 수 있습니다. 마지막으로 방문자 목록을 보여 주는 로그 보기가 표시됩니다.

이 실습 랩에서는 ASP.NET MVC대한 기본 지식이 있다고 가정합니다. 이전에 ASP.NET MVC를 사용하지 않은 경우 MVC 4 기본 사항 실습 ASP.NET 진행하는 것이 좋습니다.

참고 항목

모든 샘플 코드 및 코드 조각은 Microsoft-Web/WebCampTrainingKit 릴리스에서 사용할 수 있는 웹 캠프 교육 키트에 포함되어 있습니다. 이 랩과 관련된 프로젝트는 ASP.NET MVC 4 사용자 지정 작업 필터에서 사용할 수 있습니다.

목표

이 실습 랩에서는 다음 방법을 알아봅니다.

  • 필터링 기능을 확장하는 사용자 지정 작업 필터 특성 만들기
  • 특정 수준에 삽입하여 사용자 지정 필터 특성 적용
  • 전역적으로 사용자 지정 작업 필터 등록

필수 조건

이 랩을 완료하려면 다음 항목이 있어야 합니다.

  • 용 Microsoft Visual Studio Express 2012 이상(설치 방법에 대한 지침은 부록 A를 참조하세요).

설정

코드 조각 설치

편의를 위해 이 랩을 따라 관리하는 대부분의 코드를 Visual Studio 코드 조각으로 사용할 수 있습니다. 코드 조각을 설치하려면 .\Source\Setup\CodeSnippets.vsi 파일을 실행합니다.

Visual Studio Code 코드 조각에 익숙하지 않고 사용하는 방법을 알아보려면 이 문서의 부록 "부록 C: 코드 조각 사용"을 참조할 수 있습니다.


연습

이 실습 랩은 다음 연습으로 구성됩니다.

  1. 연습 1: 로깅 작업
  2. 연습 2: 여러 작업 필터 관리

이 랩을 완료하는 데 소요되는 예상 시간: 30분

참고 항목

각 연습에는 연습을 완료한 후 가져와야 하는 결과 솔루션이 포함된 End 폴더가 함께 제공됩니다. 연습을 진행하는 데 추가적인 도움이 필요한 경우 이 솔루션을 가이드로 사용할 수 있습니다.

연습 1: 로깅 작업

이 연습에서는 ASP.NET MVC 4 필터 공급자를 사용하여 사용자 지정 작업 로그 필터를 만드는 방법을 알아봅니다. 이를 위해 선택한 컨트롤러의 모든 활동을 기록하는 MusicStore 사이트에 로깅 필터를 적용합니다.

필터는 ActionFilterAttributeClass를 확장하고 OnActionExecuting 메서드를 재정의하여 각 요청을 catch한 다음 로깅 작업을 수행합니다. HTTP 요청, 실행 메서드, 결과 및 매개 변수에 대한 컨텍스트 정보는 ASP.NET MVC ActionExecutingContext 클래스 에서 제공됩니다.

참고 항목

ASP.NET MVC 4에는 사용자 지정 필터를 만들지 않고 사용할 수 있는 기본 필터 공급자도 있습니다. ASP.NET MVC 4는 다음과 같은 유형의 필터를 제공합니다.

  • 인증을 수행하거나 요청의 속성의 유효성을 검사하는 등 작업 메서드를 실행할지 여부에 대한 보안 결정을 내리는 권한 부여 필터입니다.
  • 작업 메서드 실행을 래핑하는 작업 필터입니다. 이 필터는 작업 메서드에 추가 데이터 제공, 반환 값 검사 또는 작업 메서드 실행 취소와 같은 추가 처리를 수행할 수 있습니다.
  • ActionResult 개체의 실행을 래핑하는 결과 필터입니다. 이 필터는 HTTP 응답 수정과 같은 결과의 추가 처리를 수행할 수 있습니다.
  • 권한 부여 필터부터 시작하여 결과의 실행으로 끝나는 처리되지 않은 예외가 작업 메서드의 어딘가에 throw된 경우 실행되는 예외 필터입니다. 예외 필터는 로깅 또는 오류 페이지 표시와 같은 작업에 사용할 수 있습니다.

필터 공급자에 대한 자세한 내용은 MSDN 링크(https://msdn.microsoft.com/library/dd410209.aspx)를 참조하세요.

MVC Music Store 애플리케이션 로깅 기능 정보

이 Music Store 솔루션에는 요청을 받은 컨트롤러 이름, 호출된 작업, 클라이언트 IP 및 타임스탬프를 포함하는 사이트 로깅, ActionLog에 대한 새 데이터 모델 테이블이 있습니다.

데이터 모델. ActionLog 테이블입니다.

데이터 모델 - ActionLog 테이블

이 솔루션은 MvcMusicStores/Views/ActionLog에서 찾을 수 있는 작업 로그에 대한 ASP.NET MVC 뷰를 제공합니다.

작업 로그 보기

작업 로그 보기

이 지정된 구조를 사용하면 모든 작업이 컨트롤러의 요청을 중단하고 사용자 지정 필터링을 사용하여 로깅을 수행하는 데 집중합니다.

작업 1 - 컨트롤러의 요청을 catch하는 사용자 지정 필터 만들기

이 작업에서는 로깅 논리를 포함하는 사용자 지정 필터 특성 클래스를 만듭니다. 이를 위해 MVC ActionFilterAttribute 클래스 ASP.NET 확장하고 인터페이스 IActionFilter구현합니다.

참고 항목

ActionFilterAttribute는 모든 특성 필터의 기본 클래스입니다. 컨트롤러 동작 실행 전후에 특정 논리를 실행하는 다음 메서드를 제공합니다.

  • OnActionExecuting(ActionExecutingContext filterContext): 작업 메서드가 호출되기 직전에.
  • OnActionExecuted(ActionExecutedContext filterContext): 작업 메서드가 호출된 후 결과가 실행되기 전(보기 렌더링 전).
  • OnResultExecuting(ResultExecutingContext filterContext): 결과가 실행되기 바로 전에(보기 렌더링 전)
  • OnResultExecuted(ResultExecutedContext filterContext): 결과가 실행된 후(뷰가 렌더링된 후)

이러한 메서드를 파생 클래스로 재정의하여 고유한 필터링 코드를 실행할 수 있습니다.

  1. \Source\Ex01-LoggingActions\Begin 폴더에 있는 Begin 솔루션을 엽니다.

    1. 계속하기 전에 일부 누락된 NuGet 패키지를 다운로드해야 합니다. 이렇게 하려면 프로젝트 메뉴를 클릭하고 NuGet 패키지 관리를 선택합니다.

    2. NuGet 패키지 관리 대화 상자에서 복원을 클릭하여 누락된 패키지를 다운로드합니다.

    3. 마지막으로 빌드 솔루션 빌드를 클릭하여 솔루션을 빌드 | 합니다.

      참고 항목

      NuGet을 사용할 때의 이점 중 하나는 프로젝트의 모든 라이브러리를 배송할 필요가 없어 프로젝트 크기를 줄일 수 있다는 것입니다. NuGet Power Tools를 사용하면 Packages.config 파일에서 패키지 버전을 지정하면 프로젝트를 처음 실행할 때 필요한 모든 라이브러리를 다운로드할 수 있습니다. 이 때문에 이 랩에서 기존 솔루션을 연 후 이러한 단계를 실행해야 합니다.

      자세한 내용은 다음 문서를 https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages참조하세요.

  2. Filters 폴더에 새 C# 클래스를 추가하고 이름을 CustomActionFilter.cs. 이 폴더는 모든 사용자 지정 필터를 저장합니다.

  3. CustomActionFilter.cs 열고 System.Web.MvcMvcMusicStore.Models 네임스페이스에 대한 참조를 추가합니다.

    (코드 조각 - ASP.NET MVC 4 사용자 지정 작업 필터 - Ex1-CustomActionFilterNamespaces)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    
  4. ActionFilterAttribute에서 CustomActionFilter 클래스를 상속한 다음 CustomActionFilter 클래스에서 IActionFilter 인터페이스를 구현합니다.

    //...
    namespace MvcMusicStore.Filters
    {
        public class CustomActionFilter : ActionFilterAttribute, IActionFilter
        {
            //...
        }
    }
    
  5. CustomActionFilter 클래스가 OnActionExecuting 메서드를 재정의하고 필터의 실행을 기록하는 데 필요한 논리를 추가합니다. 이렇게 하려면 CustomActionFilter 클래스 내에 강조 표시된 다음 코드를 추가합니다.

    (코드 조각 - ASP.NET MVC 4 사용자 지정 작업 필터 - Ex1-LoggingActions)

    public class CustomActionFilter : ActionFilterAttribute, IActionFilter
    {
        void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
        {
            // TODO: Add your action filter's tasks here
    
            // Log Action Filter call
            using (MusicStoreEntities storeDb = new MusicStoreEntities())
            {
                ActionLog log = new ActionLog()
                {
                    Controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
                    Action = string.Concat(filterContext.ActionDescriptor.ActionName, " (Logged By: Custom Action Filter)"),
                    IP = filterContext.HttpContext.Request.UserHostAddress,
                    DateTime = filterContext.HttpContext.Timestamp
                };
                storeDb.ActionLogs.Add(log);
                storeDb.SaveChanges();
                OnActionExecuting(filterContext);
            }
        }
    }
    

    참고 항목

    OnActionExecuting 메서드는 Entity Framework를 사용하여 새 ActionLog 레지스터를 추가합니다. filterContext의 컨텍스트 정보로 새 엔터티 인스턴스를 만들고 채웁니다.

    msdn에서 ControllerContext 클래스에 대해 자세히 읽을 수 있습니다.

작업 2 - Store Controller 클래스에 코드 인터셉터 삽입

이 작업에서는 기록될 모든 컨트롤러 클래스 및 컨트롤러 작업에 삽입하여 사용자 지정 필터를 추가합니다. 이 연습에서는 스토어 컨트롤러 클래스에 로그가 있습니다.

삽입된 요소가 호출될 때 ActionLogFilterAttribute 사용자 지정 필터에서 OnActionExecuting 메서드가 실행됩니다.

특정 컨트롤러 메서드를 가로챌 수도 있습니다.

  1. MvcMusicStore\Controllers에서 StoreController를 열고 필터 네임스페이스에 대한 참조를 추가합니다.

    using System.Linq;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    using MvcMusicStore.Filters;
    
  2. 클래스 선언 앞에 [CustomActionFilter] 특성을 추가하여 사용자 지정 필터 CustomActionFilter를 StoreController 클래스에 삽입합니다.

    ...
    [CustomActionFilter]
    public class StoreController : Controller
    {
        ...
    }
    

    참고 항목

    필터가 컨트롤러 클래스에 삽입되면 모든 작업도 삽입됩니다. 작업 집합에 대해서만 필터를 적용하려면 각 작업에 [CustomActionFilter]를 삽입해야 합니다.

    [CustomActionFilter]
    public ActionResult Index()
    {
      ...
    }
    
    [CustomActionFilter]
    public ActionResult Browse(string genre)
    {
      ...
    }
    

작업 3 - 애플리케이션 실행

이 작업에서는 로깅 필터가 작동하는지 테스트합니다. 애플리케이션을 시작하고 스토어를 방문한 다음 기록된 활동을 확인합니다.

  1. F5 키를 눌러 애플리케이션을 실행합니다.

  2. /ActionLog로 이동하여 로그 보기 초기 상태를 확인합니다.

    스크린샷은 페이지 작업 전의 작업 로그 상태를 보여줍니다.

    페이지 작업 전에 추적기 상태 기록

    참고 항목

    기본적으로 메뉴의 기존 장르를 검색할 때 생성되는 항목이 항상 하나씩 표시됩니다.

    간단히 하기 위해 애플리케이션이 실행될 때마다 ActionLog 테이블을 정리하므로 각 특정 작업의 확인 로그만 표시합니다.

    Store 컨트롤러 내에서 실행된 모든 작업에 대한 기록 로그를 저장하려면 Session_Start 메서드(Global.asax 클래스)에서 다음 코드를 제거해야 할 수 있습니다.

    // Clean up Logs Table
    MusicStoreEntities storeDB = new MusicStoreEntities();
    foreach (var log in 
    
    storeDB.ActionLogs.ToList())
    {
       storeDB.ActionLogs.Remove(log);
    }
    
    storeDB.SaveChanges();
    
  3. 메뉴에서 장르하나를 클릭하고 사용 가능한 앨범을 찾아보는 것과 같은 몇 가지 작업을 수행합니다.

  4. /ActionLog로 이동하고 로그가 비어 있으면 F5 키를 눌러 페이지를 새로 고칩니다. 방문이 추적되었는지 확인합니다.

    스크린샷은 방문을 확인할 수 있는 작업 로그를 보여줍니다.

    활동이 기록된 작업 로그

연습 2: 여러 작업 필터 관리

이 연습에서는 StoreController 클래스에 두 번째 사용자 지정 작업 필터를 추가하고 두 필터가 모두 실행되는 특정 순서를 정의합니다. 그런 다음 전역적으로 필터를 등록하도록 코드를 업데이트합니다.

필터의 실행 순서를 정의할 때 고려해야 할 다양한 옵션이 있습니다. 예를 들어 Order 속성 및 필터의 범위는 다음과 같습니다.

예를 들어 각 필터에 대한 범위를 정의할 수 있습니다. 예를 들어 컨트롤러 범위 내에서 실행할 모든 작업 필터의 범위를 지정하고 모든 권한 부여 필터를 전역 범위에서 실행할 수 있습니다. 범위에는 정의된 실행 순서가 있습니다.

또한 각 작업 필터에는 필터 범위에서 실행 순서를 결정하는 데 사용되는 Order 속성이 있습니다.

사용자 지정 작업 필터 실행 순서에 대한 자세한 내용은 MSDN 문서(https://msdn.microsoft.com/library/dd381609(v=vs.98).aspx)를 참조하세요.

작업 1: 새 사용자 지정 작업 필터 만들기

이 작업에서는 새 사용자 지정 작업 필터를 만들어 StoreController 클래스에 삽입하고 필터의 실행 순서를 관리하는 방법을 배웁니다.

  1. \Source\Ex02-ManagingMultipleActionFilters\Begin 폴더에 있는 Begin 솔루션을 엽니다. 그렇지 않으면 이전 연습을 완료하여 얻은 끝 솔루션을 계속 사용할 수 있습니다.

    1. 제공 된 Begin 솔루션을 연 경우 계속하기 전에 누락된 NuGet 패키지를 다운로드해야 합니다. 이렇게 하려면 프로젝트 메뉴를 클릭하고 NuGet 패키지 관리를 선택합니다.

    2. NuGet 패키지 관리 대화 상자에서 복원을 클릭하여 누락된 패키지를 다운로드합니다.

    3. 마지막으로 빌드 솔루션 빌드를 클릭하여 솔루션을 빌드 | 합니다.

      참고 항목

      NuGet을 사용할 때의 이점 중 하나는 프로젝트의 모든 라이브러리를 배송할 필요가 없어 프로젝트 크기를 줄일 수 있다는 것입니다. NuGet Power Tools를 사용하면 Packages.config 파일에서 패키지 버전을 지정하면 프로젝트를 처음 실행할 때 필요한 모든 라이브러리를 다운로드할 수 있습니다. 이 때문에 이 랩에서 기존 솔루션을 연 후 이러한 단계를 실행해야 합니다.

      자세한 내용은 다음 문서를 https://docs.nuget.org/docs/workflows/using-nuget-without-committing-packages참조하세요.

  2. Filters 폴더에 새 C# 클래스를 추가하고 이름을 MyNewCustomActionFilter.cs

  3. MyNewCustomActionFilter.cs 열고 System.Web.MvcMvcMusicStore.Models 네임스페이스에 대한 참조를 추가합니다.

    (코드 조각 - ASP.NET MVC 4 사용자 지정 작업 필터 - Ex2-MyNewCustomActionFilterNamespaces)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.Mvc;
    using MvcMusicStore.Models;
    
  4. 기본 클래스 선언을 다음 코드로 바꿉다.

    (코드 조각 - ASP.NET MVC 4 사용자 지정 작업 필터 - Ex2-MyNewCustomActionFilterClass)

    public class MyNewCustomActionFilter : ActionFilterAttribute, IActionFilter
    {
      void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
    
      {
            // TODO: Add your acction filter's tasks here
    
            // Log Action Filter Call
            MusicStoreEntities storeDB = new MusicStoreEntities();
    
            ActionLog log = new ActionLog()
            {
                 Controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName,
                 Action = filterContext.ActionDescriptor.ActionName + " (Logged By: 
    
    MyNewCustomActionFilter)",
                 IP = filterContext.HttpContext.Request.UserHostAddress,
                 DateTime = filterContext.HttpContext.Timestamp
            };
    
            storeDB.ActionLogs.Add(log);
            storeDB.SaveChanges();
    
            this.OnActionExecuting(filterContext);
      }
    }
    

    참고 항목

    이 사용자 지정 작업 필터는 이전 연습에서 만든 필터와 거의 동일합니다. 주요 차이점은 로그를 등록한 필터를 식별하기 위해 이 새 클래스의 이름으로 업데이트된 "Logged By" 특성이 있다는 것입니다.

작업 2: StoreController 클래스에 새 코드 인터셉터 삽입

이 작업에서는 StoreController 클래스에 새 사용자 지정 필터를 추가하고 솔루션을 실행하여 두 필터가 함께 작동하는 방식을 확인합니다.

  1. MvcMusicStore\Controllers에 있는 StoreController 클래스를 열고 다음 코드와 같이 새 사용자 지정 필터 MyNewCustomActionFilter를 StoreController 클래스에 삽입합니다.

    [MyNewCustomActionFilter]
    [CustomActionFilter]
    public class StoreController : Controller
    {
    ...
    }
    
  2. 이제 이러한 두 사용자 지정 작업 필터의 작동 방식을 확인하기 위해 애플리케이션을 실행합니다. 이렇게 하려면 F5 키를 누르고 애플리케이션이 시작될 때까지 기다립니다.

  3. /ActionLog로 이동하여 로그 보기 초기 상태를 확인합니다.

    스크린샷은 초기 상태의 작업 로그 추적기 상태를 보여줍니다.

    페이지 작업 전에 추적기 상태 기록

  4. 메뉴에서 장르하나를 클릭하고 사용 가능한 앨범을 찾아보는 것과 같은 몇 가지 작업을 수행합니다.

  5. 이번에는 확인합니다. StorageController 클래스에 추가한 각 사용자 지정 작업 필터에 대해 한 번씩 두 번 방문이 추적되었습니다.

    스크린샷은 방문이 두 번 추적된 작업 로그를 보여줍니다.

    활동이 기록된 작업 로그

  6. 브라우저를 닫습니다.

작업 3: 필터 순서 관리

이 작업에서는 Order 속성을 사용하여 필터의 실행 순서를 관리하는 방법을 알아봅니다.

  1. MvcMusicStore\Controllers에 있는 StoreController 클래스를 열고 아래와 같이 두 필터에서 Order 속성을 지정합니다.

    [MyNewCustomActionFilter(Order = 2)]
    [CustomActionFilter(Order = 1)]
    public class StoreController : Controller
    {
    ...
    }
    
  2. 이제 Order 속성의 값에 따라 필터가 실행되는 방법을 확인합니다. Order 값이 가장 작은 필터(CustomActionFilter)가 실행된 첫 번째 필터임을 확인할 수 있습니다. F5 키를 누르고 애플리케이션이 시작될 때까지 기다립니다.

  3. /ActionLog로 이동하여 로그 보기 초기 상태를 확인합니다.

    스크린샷은 페이지 작업 전의 작업 로그를 보여줍니다.

    페이지 작업 전에 추적기 상태 기록

  4. 메뉴에서 장르하나를 클릭하고 사용 가능한 앨범을 찾아보는 것과 같은 몇 가지 작업을 수행합니다.

  5. 이번에는 방문이 필터의 주문 값인 CustomActionFilter 로그의 첫 번째 순서로 추적되었는지 확인합니다.

    스크린샷은 CustomActionFilter에서 정렬한 작업이 있는 작업 로그를 보여줍니다.

    활동이 기록된 작업 로그

  6. 이제 필터의 주문 값을 업데이트하고 로깅 순서가 어떻게 변경되는지 확인합니다. StoreController 클래스에서 아래와 같이 필터의 주문 값을 업데이트합니다.

    [MyNewCustomActionFilter(Order = 1)]
    [CustomActionFilter(Order = 2)]
    public class StoreController : Controller
    {
    ...
    }
    
  7. F5 키를 눌러 애플리케이션을 다시 실행합니다.

  8. 메뉴에서 장르하나를 클릭하고 사용 가능한 앨범을 찾아보는 것과 같은 몇 가지 작업을 수행합니다.

  9. 이번에는 MyNewCustomActionFilter 필터에서 만든 로그가 먼저 표시되는지 확인합니다.

    스크린샷은 지정한 필터에서 만든 로그가 있는 작업 로그를 먼저 보여 줍니다.

    활동이 기록된 작업 로그

작업 4: 전역적으로 필터 등록

이 작업에서는 새 필터(MyNewCustomActionFilter)를 전역 필터로 등록하도록 솔루션을 업데이트합니다. 이렇게 하면 이전 작업과 같이 StoreController 작업뿐만 아니라 애플리케이션에서 수행된 모든 작업에 의해 트리거됩니다.

  1. StoreController 클래스에서 [CustomActionFilter]에서 [MyNewCustomActionFilter] 특성 및 주문 속성을 제거합니다. 다음과 같이 표시됩니다.

    [CustomActionFilter]
    public class StoreController : Controller
    {
    ...
    }
    
  2. Global.asax 파일을 열고 Application_Start 메서드를 찾습니다. 애플리케이션이 시작될 때마다 FilterConfig 클래스 내에서 RegisterGlobalFilters 메서드를 호출하여 전역 필터를 등록합니다.

    Global.asax에서 전역 필터 등록

    Global.asax에서 전역 필터 등록

  3. App_Start 폴더 내에서 FilterConfig.cs 파일을 엽니다.

  4. System.Web.Mvc 사용에 대한 참조를 추가합니다. MvcMusicStore.Filters 사용 Namespace.

    using System.Web.Mvc;
    using MvcMusicStore.Filters;
    
  5. 사용자 지정 필터를 추가하는 RegisterGlobalFilters 메서드를 업데이트합니다. 이렇게 하려면 강조 표시된 코드를 추가합니다.

    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
        filters.Add(new MyNewCustomActionFilter());
    }
    
  6. F5를 눌러 애플리케이션을 실행합니다.

  7. 메뉴에서 장르하나를 클릭하고 사용 가능한 앨범을 찾아보는 것과 같은 몇 가지 작업을 수행합니다.

  8. 이제 [MyNewCustomActionFilter] 가 HomeController 및 ActionLogController에도 삽입되고 있는지 확인합니다.

    스크린샷은 새 사용자 지정 필터를 확인할 수 있는 작업 로그를 보여줍니다.

    전역 활동이 기록된 작업 로그

참고 항목

또한 부록 B: 웹 배포를 사용하여 ASP.NET MVC 4 애플리케이션 게시에 따라 이 애플리케이션을 Windows Azure 웹 사이트에 배포할 수 있습니다.


요약

이 실습 랩을 완료하여 사용자 지정 작업을 실행하도록 작업 필터를 확장하는 방법을 알아보았습니다. 또한 페이지 컨트롤러에 필터를 삽입하는 방법도 알아보았습니다. 사용된 개념은 다음과 같습니다.

  • ASP.NET MVC ActionFilterAttribute 클래스를 사용하여 사용자 지정 작업 필터를 만드는 방법
  • ASP.NET MVC 컨트롤러에 필터를 삽입하는 방법
  • Order 속성을 사용하여 필터 순서를 관리하는 방법
  • 전역적으로 필터를 등록하는 방법

부록 A: Visual Studio Express 2012 for Web 설치

Microsoft 웹 플랫폼 설치 관리자 사용하여 웹용 Microsoft Visual Studio Express 2012 또는 다른 "Express" 버전을 설치수 있습니다. 다음 지침은 Microsoft 웹 플랫폼 설치 관리자 사용하여 Visual Studio Express 2012 for Web을 설치하는 데 필요한 단계를 안내합니다.

  1. /iis/extensions/introduction-to-iis-express/iis-express-overview?linkid=9810169. 또는 웹 플랫폼 설치 관리자를 이미 설치한 경우 해당 설치 관리자를 열고 "Visual Studio Express 2012 for Web with Windows Azure SDK" 제품을 검색할 수 있습니다.

  2. 지금 설치를 클릭합니다. 웹 플랫폼 설치 관리자없는 경우 먼저 다운로드하여 설치하도록 리디렉션됩니다.

  3. 웹 플랫폼 설치 관리자가 열리면 설치를 클릭하여 설치를 시작합니다.

    Visual Studio Express 설치

    Visual Studio Express 설치

  4. 모든 제품의 라이선스 및 사용 약관을 읽고 동의를 클릭하여 계속합니다.

    사용 조건 동의

    사용 조건 동의

  5. 다운로드 및 설치 프로세스가 완료될 때까지 기다립니다.

    설치 진행률

    설치 진행률

  6. 설치가 완료되면 마침을 클릭합니다.

    설치 완료

    설치 완료

  7. 종료를 클릭하여 웹 플랫폼 설치 관리자를 닫습니다.

  8. Visual Studio Express for Web을 열려면 시작 화면으로 이동하여 "VS Express" 쓰기를 시작한 다음 VS Express for Web 타일을 클릭합니다.

    VS Express for Web 타일

    VS Express for Web 타일

부록 B: 웹 배포를 사용하여 ASP.NET MVC 4 애플리케이션 게시

이 부록은 Windows Azure 관리 포털에서 새 웹 사이트를 만들고 랩에 따라 얻은 애플리케이션을 게시하고 Windows Azure에서 제공하는 웹 배포 게시 기능을 활용하는 방법을 보여 줍니다.

작업 1 - Windows Azure Portal에서 새 웹 사이트 만들기

  1. Windows Azure 관리 포털이동하여 구독과 연결된 Microsoft 자격 증명을 사용하여 로그인합니다.

    참고 항목

    Windows Azure를 사용하면 10개의 ASP.NET 웹 사이트를 무료로 호스트한 다음 트래픽이 증가함에 따라 크기를 조정할 수 있습니다. 여기에서 등록 할 수 있습니다.

    Windows Azure Portal에 로그온

    Windows Azure 관리 포털에 로그온

  2. 명령 모음에서 새로 만들기를 클릭합니다.

    새 웹 사이트 만들기

    새 웹 사이트 만들기

  3. 컴퓨팅 | 웹 사이트를 클릭합니다. 그런 다음, 빠른 만들기 옵션을 선택합니다. 새 웹 사이트에 사용할 수 있는 URL을 제공하고 웹 사이트 만들기를 클릭합니다.

    참고 항목

    Windows Azure 웹 사이트는 제어하고 관리할 수 있는 클라우드에서 실행되는 웹 애플리케이션의 호스트입니다. 빠른 만들기 옵션을 사용하면 포털 외부에서 완료된 웹 애플리케이션을 Windows Azure 웹 사이트에 배포할 수 있습니다. 데이터베이스를 설정하는 단계는 포함되지 않습니다.

    빠른 만들기를 사용하여 새 웹 사이트 만들기

    빠른 만들기를 사용하여 새 웹 사이트 만들기

  4. 웹 사이트가 생성될 때까지 기다립니다.

  5. 웹 사이트가 만들어지면 URL 열 아래의 링크를 클릭합니다. 새 웹 사이트가 작동하는지 확인합니다.

    새 웹 사이트로 검색

    새 웹 사이트로 검색

    실행 중인 웹 사이트

    실행 중인 웹 사이트

  6. 포털로 돌아가서 이름 열 아래에 있는 웹 사이트의 이름을 클릭하여 관리 페이지를 표시합니다.

    웹 사이트 관리 페이지 열기

    웹 사이트 관리 페이지 열기

  7. 대시보드 페이지의 빠른 보기 섹션에서 게시 프로필 다운로드 링크를 클릭합니다.

    참고 항목

    게시 프로필에는 사용하도록 설정된 각 게시 방법에 대해 웹 애플리케이션을 Windows Azure 웹 사이트에 게시하는 데 필요한 모든 정보가 포함됩니다. 게시 프로필에는 게시 메서드가 사용하도록 설정된 각 엔드포인트에 연결하고 인증하는 데 필요한 URL, 사용자 자격 증명 및 데이터베이스 문자열이 포함됩니다. Microsoft WebMatrix 2, 용 Microsoft Visual Studio Express 및 Microsoft Visual Studio 2012 는 웹 애플리케이션을 Windows Azure 웹 사이트에 게시하기 위한 이러한 프로그램의 구성을 자동화하기 위해 게시 프로필 읽기를 지원합니다.

    웹 사이트 게시 프로필 다운로드

    웹 사이트 게시 프로필 다운로드

  8. 게시 프로필 파일을 알려진 위치에 다운로드합니다. 이 연습에서는 이 파일을 사용하여 Visual Studio에서 Windows Azure 웹 사이트에 웹 애플리케이션을 게시하는 방법을 알아보세요.

    게시 프로필 파일 저장

    게시 프로필 파일 저장

작업 2 - 데이터베이스 서버 구성

애플리케이션에서 SQL Server 데이터베이스를 사용하는 경우 SQL Database 서버를 만들어야 합니다. SQL Server를 사용하지 않는 간단한 애플리케이션을 배포하려는 경우 이 작업을 건너뛸 수 있습니다.

  1. 애플리케이션 데이터베이스를 저장하려면 SQL Database 서버가 필요합니다. Sql Database 서버의 대시보드에 있는 Windows Azure 관리 포털에서 구독에서 SQL Database | 서버를 | 볼 수 있습니다. 서버를 만들지 않은 경우 명령 모음의 추가 단추를 사용하여 서버를 만들 수 있습니다. 서버 이름 및 URL, 관리자 로그인 이름 및 암호를 기록해 두세요. 다음 작업에서 사용할 수 있습니다. 데이터베이스는 이후 단계에서 생성되므로 아직 만들지 마세요.

    SQL Database Server 대시보드

    SQL Database Server 대시보드

  2. 다음 작업에서는 Visual Studio에서 데이터베이스 연결을 테스트합니다. 이러한 이유로 서버의 허용된 IP 주소 목록에 로컬 IP 주소를 포함해야 합니다. 이렇게 하려면 구성을 클릭하고 현재 클라이언트 IP 주소에서 IP 주소를 선택하고 시작 IP 주소 및 끝 IP 주소 텍스트 상자에 붙여넣고 단추를 클릭합니다add-client-ip-address-ok-button.

    클라이언트 IP 주소 추가

    클라이언트 IP 주소 추가

  3. 클라이언트 IP 주소가 허용된 IP 주소 목록에 추가되면 [저장]을 클릭하여 변경 내용을 확인합니다.

    변경 내용 확인

    변경 내용 확인

작업 3 - 웹 배포를 사용하여 ASP.NET MVC 4 애플리케이션 게시

  1. ASP.NET MVC 4 솔루션으로 돌아갑니다. 솔루션 탐색기 웹 사이트 프로젝트를 마우스 오른쪽 단추로 클릭하고 게시를 선택합니다.

    애플리케이션 게시

    웹 사이트 게시

  2. 첫 번째 작업에 저장한 게시 프로필을 가져옵니다.

    게시 프로필 가져오기

    게시 프로필 가져오기

  3. 연결 유효성 검사를 클릭합니다. 유효성 검사가 완료되면 다음을 클릭합니다.

    참고 항목

    연결 유효성 검사 단추 옆에 녹색 확인 표시가 표시되면 유효성 검사가 완료됩니다.

    연결 유효성 검사

    연결 유효성 검사

  4. 설정 페이지의 데이터베이스 섹션에서 데이터베이스 연결의 텍스트 상자 옆에 있는 단추(즉, DefaultConnection)를 클릭합니다.

    웹 배포 구성

    웹 배포 구성

  5. 다음과 같이 데이터베이스 연결을 구성합니다.

    • 서버 이름에 tcp: 접두사를 사용하여 SQL Database 서버 URL을 입력합니다.

    • 사용자 이름서버 관리자 로그인 이름을 입력합니다.

    • 암호서버 관리자 로그인 암호를 입력합니다.

    • 새 데이터베이스 이름을 입력합니다.

      대상 연결 문자열 구성

      대상 연결 문자열 구성

  6. 그런 후 OK를 클릭합니다. 데이터베이스를 만들라는 메시지가 표시되면 [예]를 클릭합니다.

    데이터베이스 만들기

    데이터베이스 만들기

  7. Windows Azure에서 SQL Database에 연결하는 데 사용할 연결 문자열 기본 연결 텍스트 상자에 표시됩니다. 그런 후 Next 를 클릭합니다.

    SQL Database를 가리키는 연결 문자열

    SQL Database를 가리키는 연결 문자열

  8. 미리 보기 페이지에서 게시를 클릭합니다.

    웹 애플리케이션 게시

    웹 애플리케이션 게시

  9. 게시 프로세스가 완료되면 기본 브라우저가 게시된 웹 사이트를 엽니다.

부록 C: 코드 조각 사용

코드 조각을 사용하면 필요한 모든 코드를 손쉽게 사용할 수 있습니다. 랩 문서에서는 다음 그림과 같이 언제 사용할 수 있는지 정확하게 알려줍니다.

Visual Studio 코드 조각을 사용하여 프로젝트에 코드 삽입

Visual Studio 코드 조각을 사용하여 프로젝트에 코드 삽입

키보드를 사용하여 코드 조각을 추가하려면(C#에만 해당)

  1. 코드를 삽입할 위치에 커서를 놓습니다.
  2. 공백이나 하이픈 없이 코드 조각 이름 입력을 시작합니다.
  3. IntelliSense가 일치하는 코드 조각의 이름을 표시하는 것을 확인합니다.
  4. 올바른 코드 조각을 선택하거나 전체 코드 조각의 이름이 선택될 때까지 계속 입력합니다.
  5. Tab 키를 두 번 눌러 커서 위치에 코드 조각을 삽입합니다.

코드 조각 이름 입력 시작

코드 조각 이름 입력 시작

Tab 키를 눌러 강조 표시된 코드 조각을 선택합니다.

Tab 키를 눌러 강조 표시된 코드 조각을 선택합니다.

Tab 키를 다시 누르면 코드 조각이 확장됩니다.

Tab 키를 다시 누르면 코드 조각이 확장됩니다.

마우스(C#, Visual Basic 및 XML) 1을 사용하여 코드 조각을 추가합니다. 코드 조각을 삽입할 위치를 마우스 오른쪽 단추로 클릭합니다.

  1. 코드 조각 삽입, 내 코드 조각 삽입을 선택합니다.
  2. 목록에서 관련 코드 조각을 클릭하여 선택합니다.

코드 조각을 삽입할 위치를 마우스 오른쪽 단추로 클릭하고 코드 조각 삽입을 선택합니다.

코드 조각을 삽입할 위치를 마우스 오른쪽 단추로 클릭하고 코드 조각 삽입을 선택합니다.

목록에서 관련 코드 조각을 클릭하여 선택합니다.

목록에서 관련 코드 조각을 클릭하여 선택합니다.