ASP.NET MVC 4ASP.NET MVC 4

이 문서에서는 ASP.NET MVC 4의 릴리스에 대해 설명 합니다.This document describes the release of ASP.NET MVC 4 .

설치 참고 사항Installation Notes

ASP.NET MVC 4 for Visual Studio 2010는 웹 플랫폼 설치 관리자를 사용 하 여 ASP.NET mvc 4 홈 페이지 에서 설치할 수 있습니다.ASP.NET MVC 4 for Visual Studio 2010 can be installed from the ASP.NET MVC 4 home page using the Web Platform Installer.

ASP.NET MVC 4를 설치 하기 전에 ASP.NET MVC 4의 이전에 설치 된 미리 보기를 제거 하는 것이 좋습니다.We recommend uninstalling any previously installed previews of ASP.NET MVC 4 prior to installing ASP.NET MVC 4. 을 (를) 제거 하지 않고 ASP.NET MVC 4 베타 및 릴리스 후보를 ASP.NET MVC 4로 업그레이드할 수 있습니다.You can upgrade the ASP.NET MVC 4 Beta and Release Candidate to ASP.NET MVC 4 without uninstalling.

이 릴리스는 .NET Framework 4.5의 미리 보기 릴리스와 호환 되지 않습니다.This release is not compatible with any preview releases of .NET Framework 4.5. ASP.NET MVC 4를 설치 하기 전에 .NET Framework 4.5의 설치 된 미리 보기 릴리스를 최종 버전으로 개별적으로 업그레이드 해야 합니다.You must separately upgrade the any installed preview releases of .NET Framework 4.5 to the final version prior to installing ASP.NET MVC 4.

ASP.NET MVC 4는 ASP.NET MVC 3과 함께 설치 하 고 실행할 수 있습니다.ASP.NET MVC 4 can be installed and run side-by-side with ASP.NET MVC 3.

문서화Documentation

ASP.NET MVC 문서는 다음 URL의 MSDN 웹사이트에서 제공됩니다.Documentation for ASP.NET MVC is available on the MSDN website at the following URL:

https://go.microsoft.com/fwlink/?LinkID=243043

ASP.NET MVC에 대 한 자습서 및 기타 정보는https://www.asp.net/mvc/mvc4(ASP.NET) 웹 사이트의 MVC 4 페이지 (영문)에서 사용할 수 있습니다.Tutorials and other information about ASP.NET MVC are available on the MVC 4 page of the ASP.NET website (https://www.asp.net/mvc/mvc4).

지원Support

ASP.NET MVC 4는 완벽 하 게 지원 됩니다.ASP.NET MVC 4 is fully supported. 이 릴리스를 사용 하는 방법에 대 한 질문이 있는 경우 ASP.NET MVC 포럼 (https://forums.asp.net/1146.aspx)에 게시할 수 있습니다. ASP.NET 커뮤니티의 멤버가 비공식적인 지원을 제공할 수 있는 경우가 많습니다.If you have questions about working with this release you can also post them to the ASP.NET MVC forum (https://forums.asp.net/1146.aspx), where members of the ASP.NET community are frequently able to provide informal support.

소프트웨어 요구 사항Software Requirements

Visual Studio 용 ASP.NET MVC 4 구성 요소에는 PowerShell 2.0 및 Visual Studio 2010 서비스 팩 1 또는 Visual Web Developer Express 2010 서비스 팩 1이 필요 합니다.The ASP.NET MVC 4 components for Visual Studio require PowerShell 2.0 and either Visual Studio 2010 with Service Pack 1 or Visual Web Developer Express 2010 with Service Pack 1.

ASP.NET MVC 4의 새로운 기능New Features in ASP.NET MVC 4

이 섹션에서는 ASP.NET MVC 4 릴리스에 도입 된 기능을 설명 합니다.This section describes features that have been introduced in the ASP.NET MVC 4 release.

ASP.NET Web APIASP.NET Web API

ASP.NET MVC 4에는 브라우저 및 모바일 장치를 비롯 한 광범위 한 클라이언트에 연결할 수 있는 HTTP 서비스를 만들기 위한 새로운 프레임 워크인 ASP.NET Web API 포함 되어 있습니다.ASP.NET MVC 4 includes ASP.NET Web API, a new framework for creating HTTP services that can reach a broad range of clients including browsers and mobile devices. 또한 ASP.NET Web API는 RESTful services를 빌드하기 위한 이상적인 플랫폼입니다.ASP.NET Web API is also an ideal platform for building RESTful services.

ASP.NET Web API에는 다음 기능에 대 한 지원이 포함 됩니다.ASP.NET Web API includes support for the following features:

  • 최신 HTTP 프로그래밍 모델: 강력한 형식의 새 HTTP 개체 모델을 사용 하 여 웹 Api에서 HTTP 요청 및 응답을 직접 액세스 하 고 조작 합니다.Modern HTTP programming model: Directly access and manipulate HTTP requests and responses in your Web APIs using a new, strongly typed HTTP object model. 동일한 프로그래밍 모델 및 HTTP 파이프라인은 새 httpclient 형식을 통해 클라이언트에서 대칭적으로 사용할 수 있습니다.The same programming model and HTTP pipeline is symmetrically available on the client through the new HttpClient type.
  • 경로에 대 한 완전 한 지원: ASP.NET Web API는 경로 매개 변수 및 제약 조건을 포함 하 여 ASP.NET Routing의 전체 경로 기능 집합을 지원 합니다.Full support for routes: ASP.NET Web API supports the full set of route capabilities of ASP.NET Routing, including route parameters and constraints. 또한 간단한 규칙을 사용 하 여 작업을 HTTP 메서드에 매핑합니다.Additionally, use simple conventions to map actions to HTTP methods.
  • 콘텐츠 협상: 클라이언트와 서버는 함께 작동 하 여 web API에서 반환 되는 데이터의 올바른 형식을 결정할 수 있습니다.Content negotiation: The client and server can work together to determine the right format for data being returned from a web API. ASP.NET Web API는 XML, JSON 및 폼 URL로 인코딩된 형식에 대 한 기본 지원을 제공 하며 사용자 고유의 포맷터를 추가 하거나 기본 콘텐츠 협상 전략을 대체 하 여이 지원을 확장할 수 있습니다.ASP.NET Web API provides default support for XML, JSON, and Form URL-encoded formats and you can extend this support by adding your own formatters, or even replace the default content negotiation strategy.
  • 모델 바인딩 및 유효성 검사: 모델 바인더는 HTTP 요청의 다양 한 부분에서 데이터를 추출 하 고 이러한 메시지 부분을 웹 API 작업에서 사용할 수 있는 .NET 개체로 변환 하는 쉬운 방법을 제공 합니다.Model binding and validation: Model binders provide an easy way to extract data from various parts of an HTTP request and convert those message parts into .NET objects which can be used by the Web API actions. 유효성 검사는 데이터 주석을 기반으로 하는 작업 매개 변수에 대해서도 수행 됩니다.Validation is also performed on action parameters based on data annotations.
  • 필터: ASP.NET Web API는 [권한 부여] 특성과 같이 잘 알려진 필터를 포함 하는 필터를 지원 합니다.Filters: ASP.NET Web API supports filters including well-known filters such as the [Authorize] attribute. 작업, 권한 부여 및 예외 처리에 대 한 사용자 고유의 필터를 작성 하 고 연결할 수 있습니다.You can author and plug in your own filters for actions, authorization and exception handling.
  • 쿼리 컴퍼지션: IQueryable 을 반환 하는 작업에 대해 [쿼리 가능] 필터 특성을 사용 하 여 OData 쿼리 규칙을 통해 web API 쿼리를 지원할 수 있습니다.Query composition: Use the [Queryable] filter attribute on an action that returns IQueryable to enable support for querying your web API via the OData query conventions.
  • 향상 된 테스트 용이성: 정적 컨텍스트 개체에서 HTTP 정보를 설정 하는 대신 웹 API 작업은 HttpRequestMessageHttpResponseMessage의 인스턴스에서 작동 합니다.Improved testability: Rather than setting HTTP details in static context objects, web API actions work with instances of HttpRequestMessage and HttpResponseMessage. Web api 프로젝트와 함께 단위 테스트 프로젝트를 만들어 웹 API 기능에 대 한 단위 테스트 작성을 빠르게 시작할 수 있습니다.Create a unit test project along with your Web API project to get started quickly writing unit tests for your Web API functionality.
  • 코드 기반 구성: 구성 파일이 깨끗 하 게 유지 되 고 코드를 통해서만 ASP.NET Web API 구성이 수행 됩니다.Code-based configuration: ASP.NET Web API configuration is accomplished solely through code, leaving your config files clean. 제공 된 서비스 로케이터 패턴을 사용 하 여 확장성 점수를 구성 합니다.Use the provided service locator pattern to configure extensibility points.
  • IoC (제어의 반전) 컨테이너에 대 한 지원이 향상 되었습니다. ASP.NET Web API는 향상 된 종속성 확인자 추상화를 통해 IoC 컨테이너에 대해 뛰어난 지원을 제공 합니다.Improved support for Inversion of Control (IoC) containers: ASP.NET Web API provides great support for IoC containers through an improved dependency resolver abstraction
  • 자체 호스트: 웹 api는 전체 경로 및 Web API의 다른 기능을 계속 사용 하면서 IIS 외에도 자체 프로세스에서 호스팅될 수 있습니다.Self-host: Web APIs can be hosted in your own process in addition to IIS while still using the full power of routes and other features of Web API.
  • 사용자 지정 도움말 및 테스트 페이지 만들기: 이제 새 Iapiexplorer 서비스를 사용 하 여 web api에 대 한 전체 런타임 설명을 가져오는 웹 api에 대 한 사용자 지정 도움말 및 테스트 페이지를 쉽게 빌드할 수 있습니다.Create custom help and test pages: You now can easily build custom help and test pages for your web APIs by using the new IApiExplorer service to get a complete runtime description of your web APIs.
  • 모니터링 및 진단: 이제 ASP.NET Web API은 시스템 진단, ETW 및 타사 로깅 프레임 워크와 같은 기존 로깅 솔루션과 쉽게 통합 될 수 있도록 하는 경량 추적 인프라를 제공 합니다.Monitoring and diagnostics: ASP.NET Web API now provides light weight tracing infrastructure that makes it easy to integrate with existing logging solutions such as System.Diagnostics, ETW and third party logging frameworks. ITraceWriter 구현을 제공 하 고 web API 구성에 추가 하 여 추적을 사용 하도록 설정할 수 있습니다.You can enable tracing by providing an ITraceWriter implementation and adding it to your web API configuration.
  • 링크 생성: ASP.NET Web API Urlhelper 를 사용 하 여 동일한 응용 프로그램에서 관련 리소스에 대 한 링크를 생성할 수 있습니다.Link generation: Use the ASP.NET Web API UrlHelper to generate links to related resources in the same application.
  • 웹 API 프로젝트 템플릿: 새 MVC 4 프로젝트 마법사에서 새 Web API 프로젝트를 선택 하 여 ASP.NET Web API를 빠르게 시작 하 고 실행 합니다.Web API project template: Select the new Web API project form the New MVC 4 Project wizard to quickly get up and running with ASP.NET Web API.
  • 스 캐 폴딩: 컨트롤러 추가 대화 상자를 사용 하 여 Entity Framework 기반 모델 유형에 따라 웹 API 컨트롤러를 빠르게 스 캐 폴드 수 있습니다.Scaffolding: Use the Add Controller dialog to quickly scaffold a web API controller based on an Entity Framework based model type.

ASP.NET Web API에 대 한 자세한 내용은 https://www.asp.net/web-api를 참조 하세요.For more details on ASP.NET Web API please visit https://www.asp.net/web-api.

기본 프로젝트 템플릿에 대 한 향상 된 기능Enhancements to Default Project Templates

새 ASP.NET MVC 4 프로젝트를 만드는 데 사용 되는 템플릿이 최신 웹 사이트를 만들기 위해 업데이트 되었습니다.The template that is used to create new ASP.NET MVC 4 projects has been updated to create a more modern-looking website:

외관 향상 외에도 새 템플릿에서 향상 된 기능이 있습니다.In addition to cosmetic improvements, there's improved functionality in the new template. 템플릿에서는 적응 렌더링 이라는 기술을 사용 하 여 사용자 지정 없이 데스크톱 브라우저와 모바일 브라우저 모두에 적합 합니다.The template employs a technique called adaptive rendering to look good in both desktop browsers and mobile browsers without any customization.

작동 중인 적응 렌더링을 보려면 모바일 에뮬레이터를 사용 하거나 데스크톱 브라우저 창의 크기를 작게 조정 하면 됩니다.To see adaptive rendering in action, you can use a mobile emulator or just try resizing the desktop browser window to be smaller. 브라우저 창이 충분히 작으면 페이지 레이아웃이 변경 됩니다.When the browser window gets small enough, the layout of the page will change.

모바일 프로젝트 템플릿Mobile Project Template

새 프로젝트를 시작 하 고 모바일 및 태블릿 브라우저용으로 특정 사이트를 만들려는 경우 새 모바일 응용 프로그램 프로젝트 템플릿을 사용할 수 있습니다.If you're starting a new project and want to create a site specifically for mobile and tablet browsers, you can use the new Mobile Application project template. 이는 터치 최적화 UI를 빌드하기 위한 오픈 소스 라이브러리인 jQuery Mobile을 기반으로 합니다.This is based on jQuery Mobile, an open-source library for building touch-optimized UI:

이 템플릿은 인터넷 응용 프로그램 템플릿과 동일한 응용 프로그램 구조를 포함 하 고 컨트롤러 코드는 거의 동일 하지만, jQuery Mobile을 사용 하 여 양호한 것으로 확인 하 고 터치 기반 모바일 장치에서 잘 작동 합니다.This template contains the same application structure as the Internet Application template (and the controller code is virtually identical), but it's styled using jQuery Mobile to look good and behave well on touch-based mobile devices. 모바일 UI를 구조화 하 고 스타일을 만드는 방법에 대 한 자세한 내용은 JQuery mobile project 웹 사이트를 참조 하세요.To learn more about how to structure and style mobile UI, see the jQuery Mobile project website.

모바일에 최적화 된 보기를 추가할 데스크톱 기반 사이트가 이미 있는 경우 또는 데스크톱 및 모바일 브라우저에 대해 다르게 스타일 지정 된 보기를 제공 하는 단일 사이트를 만들려는 경우에는 새 디스플레이 모드 기능을 사용할 수 있습니다.If you already have a desktop-oriented site that you want to add mobile-optimized views to, or if you want to create a single site that serves differently styled views to desktop and mobile browsers, you can use the new Display Modes feature. (다음 섹션을 참조하십시오.)(See the next section.)

디스플레이 모드Display Modes

새 디스플레이 모드 기능을 사용 하면 응용 프로그램에서 요청을 수행 하는 브라우저에 따라 보기를 선택할 수 있습니다.The new Display Modes feature lets an application select views depending on the browser that's making the request. 예를 들어 데스크톱 브라우저에서 홈 페이지를 요청 하는 경우 응용 프로그램은 Views\Home\Index.cshtml 템플릿을 사용할 수 있습니다.For example, if a desktop browser requests the Home page, the application might use the Views\Home\Index.cshtml template. 모바일 브라우저에서 홈 페이지를 요청 하는 경우 응용 프로그램에서 Views\Home\Index.mobile.cshtml 템플릿이 반환 될 수 있습니다.If a mobile browser requests the Home page, the application might return the Views\Home\Index.mobile.cshtml template.

레이아웃 및 부분 특정 브라우저 유형에 대해 재정의할 수도 있습니다.Layouts and partials can also be overridden for particular browser types. 다음은 그 예입니다.For example:

  • Views\Shared 폴더에 __레이아웃을 모두 포함 하는 경우에는 기본적으로 응용 프로그램에서 _Layout을 사용 합니다. 모바일 브라우저 및 _레이아웃에서 요청 하는 동안에는 응용 프로그램에서 Layout을 사용 합니다.If your Views\Shared folder contains both the _Layout.cshtml and _Layout.mobile.cshtml templates, by default the application will use _Layout.mobile.cshtml during requests from mobile browsers and _Layout.cshtml during other requests.
  • 폴더에 _MyPartial 및 _MyPartial이 모두 포함 되어 있으면 명령 @Html.Partial("_MyPartial")는 모바일 브라우저에서 요청 하는 동안 MyPartial를 렌더링 하 고 다른 요청 중에는 _MyPartial를 렌더링 합니다._If a folder contains both _MyPartial.cshtml and _MyPartial.mobile.cshtml, the instruction @Html.Partial("_MyPartial") will render _MyPartial.mobile.cshtml during requests from mobile browsers, and _MyPartial.cshtml during other requests.

다른 장치에 대 한 보기, 레이아웃 또는 부분 보기를 더 많이 만들려는 경우 새 DefaultDisplayMode 인스턴스를 등록 하 여 요청이 특정 조건에 부합 될 때 검색할 이름을 지정할 수 있습니다.If you want to create more specific views, layouts, or partial views for other devices, you can register a new DefaultDisplayMode instance to specify which name to search for when a request satisfies particular conditions. 예를 들어, Global.asax 파일의 응용 프로그램_Start 메서드에 다음 코드를 추가 하 여 Apple iPhone 브라우저가 요청할 때 적용 되는 표시 모드로 문자열 "iPhone"을 등록할 수 있습니다.For example, you could add the following code to the Application_Start method in the Global.asax file to register the string "iPhone" as a display mode that applies when the Apple iPhone browser makes a request:

DisplayModeProvider.Instance.Modes.Insert(0, new
DefaultDisplayMode("iPhone")
{
    ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf
        ("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});

이 코드가 실행 된 후 Apple iPhone 브라우저가 요청을 만들면 응용 프로그램은 Views\Shared\_Layout (있는 경우)을 사용 합니다.After this code runs, when an Apple iPhone browser makes a request, your application will use the Views\Shared\_Layout.iPhone.cshtml layout (if it exists). 표시 모드에 대 한 자세한 내용은 ASP.NET MVC 4 Mobile Features을 참조 하세요.For more information on Display Mode, see ASP.NET MVC 4 Mobile Features. DisplayModeProvider를 사용 하는 응용 프로그램은 고정 displaymode NuGet 패키지를 설치 해야 합니다.Applications using DisplayModeProvider should install the Fixed DisplayModes NuGet package. ASP.NET 낙하 2012 업데이트 에는 새 프로젝트 템플릿에 고정 된 displaymodes NuGet 패키지가 포함 됩니다.The ASP.NET Fall 2012 Update includes the Fixed DisplayModes NuGet package in the new project templates. 해결 방법에 대 한 자세한 내용은 ASP.NET MVC 4 Mobile 캐싱 버그 Fixedd 를 참조 하세요.See ASP.NET MVC 4 Mobile Caching Bug Fixedd for details on the fix.

jQuery Mobile 및 Mobile 기능jQuery Mobile and Mobile Features

JQuery Mobile을 사용 하 여 ASP.NET MVC 4로 모바일 응용 프로그램을 빌드하는 방법에 대 한 자세한 내용은 자습서 ASP.NET MVC 4 모바일 기능을 참조 하세요.For information on building Mobile applications with ASP.NET MVC 4 using jQuery Mobile, see the tutorial ASP.NET MVC 4 Mobile Features.

비동기 컨트롤러에 대 한 작업 지원Task Support for Asynchronous Controllers

이제 비동기 작업 메서드를 task 또는 task 형식의 개체를 반환 하는 단일 메서드 <actionresult> 에 쓸 수 있습니다.You can now write asynchronous action methods as single methods that return an object of type Task or Task<ActionResult>.

자세한 내용은 ASP.NET MVC 4에서 비동기 메서드 사용을 참조 하세요.For more information see Using Asynchronous Methods in ASP.NET MVC 4.

Azure SDKAzure SDK

ASP.NET MVC 4는 1.6 이상 버전의 Windows Azure SDK를 지원 합니다.ASP.NET MVC 4 supports the 1.6 and newer releases of the Windows Azure SDK.

데이터베이스 마이그레이션Database Migrations

ASP.NET MVC 4 프로젝트에는 이제 Entity Framework 5가 포함 됩니다.ASP.NET MVC 4 projects now include Entity Framework 5. Entity Framework 5의 유용한 기능 중 하나는 데이터베이스 마이그레이션을 지 원하는 것입니다.One of the great features in Entity Framework 5 is support for database migrations. 이 기능을 사용 하면 데이터베이스의 데이터를 유지 하면서 코드 중심 마이그레이션을 사용 하 여 데이터베이스 스키마를 쉽게 개선할 수 있습니다.This feature enables you to easily evolve your database schema using a code-focused migration while preserving the data in the database. 데이터베이스 마이그레이션에 대 한 자세한 내용은 ASP.NET MVC 4 소개 자습서동영상 모델 및 테이블에 새 필드 추가 를 참조 하세요.For more information on database migrations, see Adding a New Field to the Movie Model and Table in the Introduction to ASP.NET MVC 4 tutorial.

빈 프로젝트 템플릿Empty Project Template

이제 완전히 정리 된 슬레이트에서 시작할 수 있도록 MVC 빈 프로젝트 템플릿이 실제로 비어 있습니다.The MVC Empty project template is now truly empty so that you can start from a completely clean slate. 이전 버전의 빈 프로젝트 템플릿은 Basic으로 이름이 변경 되었습니다.The earlier version of the Empty project template has been renamed to Basic.

모든 프로젝트 폴더에 컨트롤러 추가Add Controller to any project folder

이제 마우스 오른쪽 단추를 클릭 하 고 MVC 프로젝트의 아무 폴더에서 나 추가 컨트롤러 를 선택할 수 있습니다.You can now right click and select Add Controller from any folder in your MVC project. 이렇게 하면 MVC 및 Web API 컨트롤러를 별도의 폴더에 유지 하는 것을 포함 하 여 원하는 컨트롤러를 보다 유연 하 게 구성할 수 있습니다.This gives you more flexibility to organize your controllers however you want, including keeping your MVC and Web API controllers in separate folders.

묶음 및 축소Bundling and Minification

번들 및 축소 프레임 워크를 사용 하면 개별 파일을 스크립트와 CSS에 대 한 단일 번들 파일로 결합 하 여 웹 페이지에서 수행 해야 하는 HTTP 요청 수를 줄일 수 있습니다.The bundling and minification framework enables you to reduce the number of HTTP requests that a Web page needs to make by combining individual files into a single, bundled file for scripts and CSS. 그런 다음 번들의 내용을 축소 하 여 해당 요청의 전체 크기를 줄일 수 있습니다.It can then reduce the overall size of those requests by minifying the contents of the bundle. 축소에는 의미 체계에 따라 CSS 선택기를 축소 하기 위해 공백 제거와 같은 작업이 포함 될 수 있습니다.Minifying can include activities like eliminating whitespace to shortening variable names to even collapsing CSS selectors based on their semantics. 번들은 코드에서 선언 및 구성 되며, 번들에 대 한 단일 링크를 생성 하거나 디버그할 때 번들의 개별 콘텐츠에 대 한 여러 링크를 생성할 수 있는 도우미 메서드를 통해 뷰에서 쉽게 참조할 수 있습니다.Bundles are declared and configured in code and are easily referenced in views via helper methods which can generate either a single link to the bundle or, when debugging, multiple links to the individual contents of the bundle. 자세한 내용은 묶음 및 축소를 참조 하세요.For more information see Bundling and Minification.

OAuth 및 Openid connect를 사용 하 여 Facebook 및 기타 사이트에서 로그인 사용Enabling Logins from Facebook and Other Sites Using OAuth and OpenID

ASP.NET MVC 4 Internet 프로젝트 템플릿의 기본 템플릿에는 이제 DotNetOpenAuth 라이브러리를 사용 하는 OAuth 및 Openid connect 로그인에 대 한 지원이 포함 됩니다.The default templates in ASP.NET MVC 4 Internet Project template now includes support for OAuth and OpenID login using the DotNetOpenAuth library. OAuth 또는 Openid connect 공급자를 구성 하는 방법에 대 한 자세한 내용은 WebForms, MVC 및 웹 페이지에 대 한 oauth/Openid connect 지원ASP.NET 웹 페이지의 oauth 및 openid connect 기능 설명서를 참조 하세요.For information on configuring an OAuth or OpenID provider, see OAuth/OpenID Support for WebForms, MVC and WebPages and the OAuth and OpenID feature documentation in ASP.NET Web Pages.

ASP.NET MVC 3 프로젝트를 ASP.NET MVC 4로 업그레이드Upgrading an ASP.NET MVC 3 Project to ASP.NET MVC 4

ASP.NET MVC 4는 동일한 컴퓨터에 ASP.NET MVC 3과 함께 설치할 수 있습니다. 그러면 ASP.NET MVC 3 응용 프로그램을 ASP.NET MVC 4로 업그레이드할 시기를 유연 하 게 선택할 수 있습니다.ASP.NET MVC 4 can be installed side by side with ASP.NET MVC 3 on the same computer, which gives you flexibility in choosing when to upgrade an ASP.NET MVC 3 application to ASP.NET MVC 4.

가장 간단한 업그레이드 방법은 새 ASP.NET MVC 4 프로젝트를 만들고 기존 MVC 3 프로젝트의 모든 뷰, 컨트롤러, 코드 및 콘텐츠 파일을 새 프로젝트에 복사한 다음, 새 프로젝트의 어셈블리 참조가의 비 MVC 템플릿과 일치 하도록 업데이트 하는 것입니다. cluded assembiles를 사용 하 고 있습니다.The simplest way to upgrade is to create a new ASP.NET MVC 4 project and copy all the views, controllers, code, and content files from the existing MVC 3 project to the new project and then to update the assembly references in the new project to match any non-MVC template included assembiles you are using. MVC 3 프로젝트에서 web.config 파일을 변경한 경우 이러한 변경 내용을 MVC 4 프로젝트의 web.config 파일에 병합 해야 합니다.If you have made changes to the Web.config file in the MVC 3 project, you must also merge those changes into the Web.config file in the MVC 4 project.

기존 ASP.NET MVC 3 응용 프로그램을 버전 4로 수동으로 업그레이드 하려면 다음을 수행 합니다.To manually upgrade an existing ASP.NET MVC 3 application to version 4, do the following:

  1. 프로젝트의 모든 Web.config 파일 (프로젝트의 루트에 있고, Views 폴더에 있고, 프로젝트의 각 영역에 대 한 Views 폴더에 있음)에서 다음 텍스트의 모든 인스턴스를 바꿉니다 (참고: System.web, Version = 1.0.0.0은에서 찾을 수 없음). Visual Studio 2012를 사용 하 여 만든 프로젝트:In all Web.config files in the project (there is one in the root of the project, one in the Views folder, and one in the Views folder for each area in your project), replace every instance of the following text (note: System.Web.WebPages, Version=1.0.0.0 is not found in projects created with Visual Studio 2012):

    System.Web.Mvc, Version=3.0.0.0
    System.Web.WebPages, Version=1.0.0.0
    System.Web.Helpers, Version=1.0.0.0
    System.Web.WebPages.Razor, Version=1.0.0.0
    

    다음 텍스트를 사용 합니다.with the following corresponding text:

    System.Web.Mvc, Version=4.0.0.0
    System.Web.WebPages, Version=2.0.0.0
    System.Web.Helpers, Version=2.0.0.0
    System.Web.WebPages.Razor, Version=2.0.0.0
    
  2. 루트 Web.config 파일에서 웹 페이지: 버전 요소를 "2.0.0.0"으로 업데이트 하 고 값이 "true" 인 새 PreserveLoginUrl 키를 추가 합니다.In the root Web.config file, update the webPages:Version element to "2.0.0.0" and add a new PreserveLoginUrl key that has the value "true":

    <appSettings>
      <add key="webpages:Version" value="2.0.0.0" />
      <add key="PreserveLoginUrl" value="true" />
    </appSettings>
    
  3. 솔루션 탐색기에서 참조를 마우스 오른쪽 단추로 클릭 하 고 NuGet 패키지 관리를 선택 합니다.In Solution Explorer, right-click on the References and select Manage NuGet Packages. 왼쪽 창에서 Online\NuGet 공식 패키지 원본을 선택 하 고 다음을 업데이트 합니다.In the left pane, select Online\NuGet official package source, then update the following:

    • ASP.NET MVC 4ASP.NET MVC 4
    • (선택 사항) jQuery, jQuery 유효성 검사 및 jQuery UI(Optional) jQuery, jQuery Validation and jQuery UI
    • 필드 Entity Framework(Optional) Entity Framework
    • (Optonal) Modernizr(Optonal) Modernizr
  4. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭 한 다음 프로젝트 언로드를 선택 합니다.In Solution Explorer, right-click the project name and then select Unload Project. 그런 다음 이름을 다시 마우스 오른쪽 단추로 클릭 하 고 ProjectName.csproj 편집을 선택 합니다.Then right-click the name again and select Edit ProjectName.csproj.

  5. Projecttypeguids 요소를 찾아서 {E53F8FEA-EAE0-44A6-8774-FFD645390401}을 {E3E379DF-F4C6-4180-9B81-6769533ABE47}로 바꿉니다.Locate the ProjectTypeGuids element and replace {E53F8FEA-EAE0-44A6-8774-FFD645390401} with {E3E379DF-F4C6-4180-9B81-6769533ABE47}.

  6. 변경 내용을 저장 하 고 편집 중인 프로젝트 (.csproj) 파일을 닫은 다음 프로젝트를 마우스 오른쪽 단추로 클릭 하 고 프로젝트 다시 로드를 선택 합니다.Save the changes, close the project (.csproj) file you were editing, right-click the project, and then select Reload Project.

  7. 프로젝트가 이전 버전의 ASP.NET MVC를 사용 하 여 컴파일된 타사 라이브러리를 참조 하는 경우 루트 Web.config 파일을 열고 구성 섹션 아래에 다음 세 가지 bindingRedirect 요소를 추가 합니다.If the project references any third-party libraries that are compiled using previous versions of ASP.NET MVC, open the root Web.config file and add the following three bindingRedirect elements under the configuration section:

    <configuration>
      <!--... elements deleted for clarity ...-->
     
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Helpers" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.Mvc" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="4.0.0.0"/>
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Web.WebPages" 
                 publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0" newVersion="2.0.0.0"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    

ASP.NET MVC 4 릴리스 후보의 변경 내용Changes from ASP.NET MVC 4 Release Candidate

ASP.NET MVC 4 릴리스 후보의 릴리스 정보는 다음 위치에서 찾을 수 있습니다.The release notes for ASP.NET MVC 4 Release Candidate can be found here:

이 릴리스에서 ASP.NET MVC 4 릴리스 후보의 주요 변경 내용은 아래에 요약 되어 있습니다.The major changes from ASP.NET MVC 4 Release Candidate in this release are summarized below:

  • 컨트롤러 단위 구성: ASP.NET Web API 컨트롤러는 자체 포맷터, 작업 선택기 및 매개 변수 바인더를 설정 하기 위해 IControllerConfiguration 을 구현 하는 사용자 지정 특성을 사용 하 여 특성을 지정할 수 있습니다.Per controller configuration: ASP.NET Web API controllers can be attributed with a custom attribute that implements IControllerConfiguration to setup their own formatters, action selector and parameter binders. Httpcontrollerconfigurationattribute 가 제거 되었습니다.The HttpControllerConfigurationAttribute has been removed.
  • 경로 메시지 처리기 당: 이제 지정 된 경로에 대 한 요청 체인에서 최종 메시지 처리기를 지정할 수 있습니다.Per route message handlers: You can now specify the final message handler in the request chain for a given route. 이렇게 하면 전달 프레임 워크가 라우팅을 사용 하 여 자체 (비IHttpController) 끝점으로 디스패치할 수 있습니다.This enables support for ride-along frameworks to use routing to dispatch to their own (non-IHttpController) endpoints.
  • 진행률 알림: ProgressMessageHandler 는 업로드 중인 요청 엔터티와 다운로드 중인 응답 엔터티 모두에 대 한 진행률 알림을 생성 합니다.Progress notifications: The ProgressMessageHandler generates progress notification for both request entities being uploaded and response entities being downloaded. 이 처리기를 사용 하 여 요청 본문을 업로드 하거나 응답 본문을 다운로드 하는 정도를 추적할 수 있습니다.Using this handler it is possible to keep track of how far you are uploading a request body or downloading a response body.
  • 푸시 콘텐츠: Pushstreamcontent 클래스를 사용 하면 데이터 공급자가 스트림을 사용 하 여 동기적 또는 비동기적으로 요청 또는 응답에 직접 쓰려는 시나리오를 사용할 수 있습니다.Push content: The PushStreamContent class enables scenarios where a data producer wants to write directly to the request or response(either synchronously or asynchronously) using a stream. Pushstreamcontent 가 데이터를 수락할 준비가 되 면 출력 스트림을 사용 하 여 작업 대리자를 호출 합니다.When the PushStreamContent is ready to accept data it calls out to an action delegate with the output stream. 그러면 개발자는 필요한 기간 동안 스트림에 쓰고 쓰기가 완료 되 면 스트림을 닫을 수 있습니다.The developer can then write to the stream for as long as necessary and close the stream when writing has completed. Pushstreamcontent 는 스트림 닫기를 검색 하 고 콘텐츠를 작성 하기 위한 기본 비동기 작업 을 완료 합니다.The PushStreamContent detects the closing of the stream and completes the underlying asynchronous Task for writing out the content.
  • 오류 응답을 만드는 중: HttpError 형식을 사용 하 여 유효성 검사 오류 및 예외와 같은 오류 정보를 일관 되 게 표시 하는 동시에 IncludeErrorDetailPolicy를 그대로 사용 합니다.Creating error responses: Use the HttpError type to consistently represent error information from such as validation errors and exceptions while still honoring the IncludeErrorDetailPolicy. Createerrorresponse 확장 메서드를 사용 하 여 HttpError 를 콘텐츠로 쉽게 오류 응답을 만들 수 있습니다.Use the new CreateErrorResponse extension methods to easily create error responses with HttpError as content. HttpError 콘텐츠는 완전히 협상 된 콘텐츠입니다.The HttpError content is fully content negotiated.
  • 제거 MediaRangeMapping: 미디어 유형 범위는 이제 기본 콘텐츠 negotiator 처리 됩니다.MediaRangeMapping removed: Media type ranges are now handled by the default content negotiator.
  • 이제 단순 형식 매개 변수에 대 한 기본 매개 변수 바인딩이 [FromUri]로 되어 있습니다. ASP.NET Web API의 이전 릴리스에서는 단순 형식 매개 변수에 대 한 기본 매개 변수 바인딩이 모델 바인딩을 사용 했습니다.Default parameter binding for simple type parameters is now [FromUri]: In previous releases of ASP.NET Web API the default parameter binding for simple type parameters used model binding. 이제 단순 형식 매개 변수에 대 한 기본 매개 변수 바인딩이 [Fromuri] 입니다.The default parameter binding for simple type parameters is now [FromUri].
  • 작업 선택은 필수 매개 변수를 준수 합니다. ASP.NET Web API의 작업 선택은 이제 URI에서 제공 되는 모든 필수 매개 변수가 제공 되는 경우에만 작업을 선택 합니다.Action selection honors required parameters: Action selection in ASP.NET Web API will now only select an action if all required parameters that come from the URI are provided. 작업 메서드 시그니처의 인수에 기본값을 제공 하 여 매개 변수를 선택적으로 지정할 수 있습니다.A parameter can be specified as optional by providing a default value for the argument in the action method signature.
  • HTTP 매개 변수 바인딩 사용자 지정: Parameterbindingattribute 를 사용 하 여 특정 작업 매개 변수에 대 한 매개 변수 바인딩을 사용자 지정 하거나 HttpconfigurationParameterBindingRules 를 사용 하 여 매개 변수 바인딩을 보다 폭넓게 사용자 지정 합니다.Customize HTTP parameter bindings: Use the ParameterBindingAttribute to customize the parameter binding for a specific action parameter or use the ParameterBindingRules on the HttpConfiguration to customize parameter bindings more broadly.
  • 향상 된 MediaTypeFormatter: 포맷터는 이제 전체 Httpcontent 인스턴스에 액세스할 수 있습니다.MediaTypeFormatter improvements: Formatters now have access to the full HttpContent instance.
  • 호스트 버퍼링 정책 선택: ASP.NET Web API에서 IHostBufferPolicySelector 서비스를 구현 하 고 구성 하 여 호스트에서 버퍼링을 사용 하는 경우에 대 한 정책을 확인할 수 있도록 합니다.Host buffering policy selection: Implement and configure the IHostBufferPolicySelector service in ASP.NET Web API to enable hosts to determine the policy for when buffering is to be used.
  • 호스트의 클라이언트 인증서에 대 한 액세스 권한 없는 방식: GetClientCertificate 확장 메서드를 사용 하 여 요청 메시지에서 제공 된 클라이언트 인증서를 가져옵니다.Access client certificates in a host agnostic manner: Use the GetClientCertificate extension method to get the supplied client certificate from the request message.
  • 콘텐츠 협상 확장성: Defaultcontentnegotiator 파생 하 고 원하는 콘텐츠 협상의 모든 측면을 재정의 하 여 콘텐츠 협상을 사용자 지정 합니다.Content negotiation extensibility: Customize content negotiation by deriving from the DefaultContentNegotiator and overriding any aspect of content negotiation that you would like.
  • 406 허용 되지 않는 응답 반환에 대 한 지원: 이제 Excludematchontypeonly 매개 변수를 true로 설정 하 여 defaultcontentnegotiator 만들 때 적합 한 포맷터를 찾을 수 없는 경우 ASP.NET Web API에서 허용 되지 않는 406 응답을 반환할 수 있습니다.Support for returning 406 Not Acceptable responses: You can now return 406 Not Acceptable responses in ASP.NET Web API when a suitable formatter is not found by creating a DefaultContentNegotiator with the excludeMatchOnTypeOnly parameter set to true.
  • 양식 데이터를 NameValueCollection 또는 JToken으로 읽습니다. 각각 ParsequerystringReadAsFormDataAsync extension 메서드를 사용 하 여 URI 쿼리 문자열 또는 요청 본문의 양식 데이터를 NameValueCollection 읽을 수 있습니다.Read form data as NameValueCollection or JToken: You can read form data in the URI query string or in the request body as a NameValueCollection using the ParseQueryString and ReadAsFormDataAsync extension methods respectively. 마찬가지로, 각> 확장 메서드를 사용 하<여 URI 쿼리 문자열 또는 요청 본문의 양식 데이터를 jtoken 로 읽을 수 있습니다.Similarly, you can read form data in the URI query string or in the request body as a JToken using the TryReadQueryAsJson and ReadAsAsync<T> extension methods respectively.
  • 다중 파트 기능 향상: 이제 사용자에 게 최적의 방식으로 결과를 표시 하 고 읽을 수 있는 MIME 다중 파트 데이터의 형식에 완전히 맞는 Multipartstreamprovider 를 작성할 수 있습니다.Multipart improvements: It is now possible to write a MultipartStreamProvider that is completely tailored to the type of MIME multipart data that it can read and present the result in the optimal way to the user. 또한 구현이 MIME 다중 파트 본문 부분에서 원하는 post 처리를 수행할 수 있도록 하는 Multipartstreamprovider 에 사후 처리 단계를 후크 할 수 있습니다.You can also hook a post processing step on the MultipartStreamProvider that allows the implementation to do whatever post processing it wants on the MIME multipart body parts. 예를 들어 Multipartformdatastreamprovider 구현은 HTML 양식 데이터 파트를 읽고이를 NameValueCollection 에 추가 하므로 호출자가 쉽게 가져올 수 있습니다.For example, the MultipartFormDataStreamProvider implementation reads the HTML form data parts and adds them to a NameValueCollection so they are easy to get at from the caller.
  • 향상 된 링크 생성: Urlhelper 는 더 이상 httpcontrollercontext에 의존 하지 않습니다.Link generation improvements: The UrlHelper no longer depends on HttpControllerContext. 이제 HttpRequestMessage 를 사용할 수 있는 모든 컨텍스트에서 urlhelper 에 액세스할 수 있습니다.You can now access the UrlHelper from any context where the HttpRequestMessage is available.
  • 메시지 처리기 실행 순서 변경: 이제 메시지 처리기가 역순으로 구성 된 순서 대로 실행 됩니다.Message handler execution order change: Message handlers are now executed in the order that they are configured instead of in reverse order.
  • 메시지 처리기를 연결 하기 위한 도우미입니다. DelegatingHandlers 를 연결 하 고 원하는 파이프라인이 준비 된 httpclient 를 만들 수 있는 새 httpclientfactory 입니다.Helper for wiring up message handlers: The new HttpClientFactory that can wire up DelegatingHandlers and create an HttpClient with the desired pipeline ready to go. 또한 대체 내부 처리기 (기본값은 Httpclienthandler)를 연결 하는 기능을 제공 하 고, httpmessage호출자 를 사용 하는 경우 또는 httpclient 대신 DelegatingHandler 를 최상위 호출자로 사용 하는 경우 연결을 수행할 수 있습니다.It also provides functionality for wiring up with alternative inner handlers (the default is HttpClientHandler) as well as do the wiring up when using HttpMessageInvoker or another DelegatingHandler instead of HttpClient as the top-invoker.
  • ASP.NET 웹 최적화의 CDNs 지원: 이제 ASP.NET 웹 최적화는 CDN 대체 경로에 대 한 지원을 제공 하 여 각 번들에 대해 콘텐츠 배달 네트워크에서 동일한 리소스를 가리키는 추가 URL을 지정할 수 있도록 합니다.Support for CDNs in ASP.NET Web Optimization: ASP.NET Web Optimization now provides support for CDN alternate paths enabling you to specify for each bundle an additional URL which points to that same resource on a content delivery network. CDNs를 지원 하면 웹 응용 프로그램의 최종 소비자에 게 매우 가깝게 스크립트 및 스타일 번들을 얻을 수 있습니다.Supporting CDNs enables you to get your script and style bundles geographically closer to the end consumers of your Web applications. CDN을 사용할 수 없는 경우 프로덕션 앱에서 대체를 구현 해야 합니다.Production apps should implement a fallback when the CDN is unavailable. 대체 (fallback)를 테스트 합니다.Test the fallback.
  • ASP.NET Web API 경로 및 구성이 Webapiconfig. 테스트 코드에서 사용할 수 있는 정적 메서드를 등록 합니다.ASP.NET Web API routes and configuration moved to WebApiConfig.Register static method that can be resused in test code. RouteConfig RegisterRoutes 에 이전에 ASP.NET Web API 경로가 표준 MVC 경로와 함께 추가 되었습니다.ASP.NET Web API routes previously were added in RouteConfig.RegisterRoutes along with the standard MVC routes. 이제 기본 ASP.NET Web API 경로 및 구성이 별도의 Webapiconfig. Register 메서드로 처리 되어 테스트를 용이 하 게 합니다.The default ASP.NET Web API routes and configuration are now handled in a separate WebApiConfig.Register method to facilitate testing.

알려진 문제 및 주요 변경 내용Known Issues and Breaking Changes

  • ASP.NET MVC 4의 RC 및 RTM 버전은 모바일 뷰를 반환 해야 하는 경우 캐시 된 데스크톱 보기를 잘못 반환 합니다.The RC and RTM version of ASP.NET MVC 4 incorrectly returned cached desktop views when mobile views should be returned.

  • Razor 뷰 엔진의 주요 변경 내용입니다.Breaking changes in the Razor View Engine. 다음 형식이 system.object에서 제거 되었습니다.The following types were removed from System.Web.Mvc.Razor:

    • ModelSpanModelSpan
    • MvcVBRazorCodeGeneratorMvcVBRazorCodeGenerator
    • MvcCSharpRazorCodeGeneratorMvcCSharpRazorCodeGenerator
    • MvcVBRazorCodeParserMvcVBRazorCodeParser

    다음 메서드도 제거 되었습니다.The following methods were also removed:

    • MvcCSharpRazorCodeParser (ParseInheritsStatement) ((System.web.MvcCSharpRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
    • MvcWebPageRazorHost (DecorateCodeGenerator) (RazorCodeGenerator)MvcWebPageRazorHost.DecorateCodeGenerator(System.Web.Razor.Generator.RazorCodeGenerator)
    • MvcVBRazorCodeParser (System.web. CodeBlockInfo)MvcVBRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
  • ASP.NET MVC 4 앱의 WebData 디렉터리에 WebMatrix를 포함 하는 경우 폼 인증에 대 한 URL을 사용 합니다.When WebMatrix.WebData.dll is included in the /bin directory of an ASP.NET MVC 4 apps, it takes over the URL for forms authentication. 응용 프로그램에 WebData 어셈블리를 추가 하는 경우 (예를 들어, 배포 가능 종속성 추가 대화 상자를 사용할 때 "Razor 구문을 사용 하 여 ASP.NET 웹 페이지"을 선택 하는 경우)에는 기본 ASP.NET MVC 계정 컨트롤러에서 예상 하는/account/pvrn이 아닌/t r i n s/logon으로의 인증 로그인 리디렉션이 재정의 됩니다.Adding the WebMatrix.WebData.dll assembly to your application (for example, by selecting "ASP.NET Web Pages with Razor Syntax" when using the Add Deployable Dependencies dialog) will override the authentication login redirect to /account/logon rather than /account/login as expected by the default ASP.NET MVC Account Controller. 이 동작을 방지 하 고 web.config의 인증 섹션에 이미 지정 된 URL을 사용 하려면 PreserveLoginUrl 라는 appSetting를 추가 하 고 true로 설정 하면 됩니다.To prevent this behavior and use the URL specified already in the authentication section of web.config, you can add an appSetting called PreserveLoginUrl and set it to true:

    <appSettings>
        <add key="PreserveLoginUrl" value="true"/>
    </appSettings>
    
  • Visual Studio 2010 및 Visual Web Developer 2010의 side-by-side 설치를 위해 ASP.NET MVC 4를 설치 하려고 하면 NuGet 패키지 관리자가 설치 되지 않습니다.The NuGet package manager fails to install when attempting to install ASP.NET MVC 4 for side by side installations of Visual Studio 2010 and Visual Web Developer 2010. ASP.NET MVC 4를 사용 하 여 Visual Studio 2010 및 Visual Web Developer 2010을 함께 실행 하려면 두 버전의 Visual Studio가 이미 설치 된 후 ASP.NET MVC 4를 설치 해야 합니다.To run Visual Studio 2010 and Visual Web Developer 2010 side by side with ASP.NET MVC 4 you must install ASP.NET MVC 4 after both versions of Visual Studio have already been installed.

  • 필수 구성 요소가 이미 제거 된 경우 ASP.NET MVC 4를 제거 하는 작업이 실패 합니다.Uninstalling ASP.NET MVC 4 fails if prerequisites have already been uninstalled. ASP.NET MVC 4를 완전히 제거 하려면 Visual Studio를 제거 하기 전에 ASP.NET MVC 4를 제거 해야 합니다.To cleanly uninstall ASP.NET MVC 4you must uninstall ASP.NET MVC 4 prior to uninstalling Visual Studio.

  • ASP.NET MVC 4를 설치 하면 ASP.NET MVC 3 RTM 응용 프로그램이 중단 됩니다.Installing ASP.NET MVC 4 breaks ASP.NET MVC 3 RTM applications. RTM 릴리스로 만든 ASP.NET MVC 3 응용 프로그램 ( ASP.NET MVC 3 도구 업데이트 릴리스를 사용 하지 않음)은 ASP.NET mvc 4와 함께 작동 하기 위해 다음과 같이 변경 해야 합니다.ASP.NET MVC 3 applications that were created with the RTM release (not with the ASP.NET MVC 3 Tools Update release) require the following changes in order to work side-by-side with ASP.NET MVC 4. 이러한 업데이트를 수행 하지 않고 프로젝트를 빌드하면 컴파일 오류가 발생 합니다.Building the project without making these updates results in compilation errors.

    필수 업데이트Required updates

    1. 루트 Web.config 파일에서 키 웹 페이지: 버전 및 값 1.0.0.0을 사용 하 여 새 <appSettings> 항목을 추가 합니다.In the root Web.config file, add a new <appSettings> entry with the key webPages:Version and the value 1.0.0.0.

      <appSettings>
          <add key="webpages:Version" value="1.0.0.0"/>
          <add key="ClientValidationEnabled" value="true"/>
          <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
      </appSettings>
      
    2. 솔루션 탐색기에서 프로젝트 이름을 마우스 오른쪽 단추로 클릭 한 다음 프로젝트 언로드를 선택 합니다.In Solution Explorer, right-click the project name and then select Unload Project. 그런 다음 이름을 다시 마우스 오른쪽 단추로 클릭 하 고 ProjectName.csproj 편집을 선택 합니다.Then right-click the name again and select Edit ProjectName.csproj.

    3. 다음 어셈블리 참조를 찾습니다.Locate the following assembly references:

      <Reference Include="System.Web.WebPages"/> 
      <Reference Include="System.Web.Helpers" />
      

      다음으로 바꿉니다.Replace them with the following:

      <Reference Include="System.Web.WebPages, Version=1.0.0.0,
      Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL "/> 
      <Reference Include="System.Web.Helpers, Version=1.0.0.0,
      Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
      
    4. 변경 내용을 저장 하 고 편집 중인 프로젝트 (.csproj) 파일을 닫은 다음 프로젝트를 마우스 오른쪽 단추로 클릭 하 고 다시 로드를 선택 합니다.Save the changes, close the project (.csproj) file you were editing, and then right-click the project and select Reload.

  • ASP.NET MVC 4 프로젝트를 4.5의 대상 4.0으로 변경 해도 EntityFramework 어셈블리 참조는 업데이트 되지 않습니다. ASP.NET MVC 4 프로젝트를 대상 4.0 4.5 후 대상으로 변경 하는 경우 EntityFramework 어셈블리에 대 한 참조는 여전히 4.5 버전을 가리킵니다.Changing an ASP.NET MVC 4 project to target 4.0 from 4.5 does not update the EntityFramework assembly reference: If you change an ASP.NET MVC 4 project to target 4.0 after targetting 4.5 the reference to the EntityFramework assembly will still point to the 4.5 version. 이 문제를 해결 하려면 EntityFramework NuGet 패키지를 제거 하 고 다시 설치 합니다.To fix this issue uninstall and reinstall the EntityFramework NuGet package.

  • 403 4.5에서 대상 4.0로 변경한 후 Azure에서 ASP.NET MVC 4 응용 프로그램을 실행할 때 사용할 수 없음: 4.5에 연결한 후 ASP.NET MVC 4 프로젝트를 대상 4.0으로 변경 하 고 Azure에 배포 하는 경우 런타임에 403 사용할 수 없음 오류가 표시 될 수 있습니다.403 Forbidden when running an ASP.NET MVC 4 application on Azure after changing to target 4.0 from 4.5: If you change an ASP.NET MVC 4 project to target 4.0 after targetting 4.5 and then deploy to Azure you may see a 403 Forbidden error at runtime. 이 문제를 해결 하려면 web.config에 다음을 추가 합니다. <modules runAllManagedModulesForAllRequests="true" />To workaround this issue add the following to your web.config: <modules runAllManagedModulesForAllRequests="true" />

  • Razor 파일의 문자열 리터럴에 ''를 입력 하면 Visual Studio 2012의 작동이 중단 됩니다.Visual Studio 2012 crashes when you type a '' in a string literal in a Razor file. 문제를 해결 하려면 먼저 문자열 리터럴의 닫는 따옴표를 입력 합니다.To work around the issue enter the closing quote of the string literal first.

  • 인터넷 템플릿에서 "계정/관리"를 검색 하면 CHS, 추적 및 CHT 언어에 대 한 런타임 오류가 발생 합니다.Browsing to "Account/Manage" in the Internet template results in a runtime error for CHS, TRK and CHT languages. 문제를 해결 하려면 <강력한> 태그 내의 유일한 콘텐츠로 배치 하 여 @User.Identity.Name 를 분리 하도록 페이지를 수정 합니다.To fix the issue modify the page to separate out @User.Identity.Name by puting it as the only content within the <strong> tag.

  • Google 및 LinkedIn 공급자는 Azure 웹 사이트 내에서 지원 되지 않습니다.Google and LinkedIn providers are not supported within Azure Web Sites. Azure 웹 사이트에 배포 하는 경우 대체 인증 공급자를 사용 합니다.Use alternative authentication providers when deploying to Azure Web Sites.

  • IIS 8 Express/IIS에서 UriPathExtensionMapping을 사용 하는 경우 확장을 사용 하려고 할 때 404 찾을 수 없음 오류가 표시 됩니다.When using UriPathExtensionMapping with IIS 8 Express/IIS, you would receive 404 Not Found errors when you try to use the extension. 정적 파일 처리기는 Uripathextensionmappings를 사용 하는 웹 api에 대 한 요청을 방해 합니다.The static file handler will interfere with requests to web APIs that use UriPathExtensionMappings. 문제를 해결 하려면 web.config에서 runAllManagedModulesForAllRequests = true 를 설정 합니다.Set runAllManagedModulesForAllRequests=true in web.config to work around the issue.

  • Controller. Execute 메서드는 더 이상 호출 되지 않습니다.Controller.Execute method is no longer called. 이제 모든 MVC 컨트롤러는 항상 비동기적으로 실행 됩니다.All MVC controllers are now always executed asynchronously.