다음을 통해 공유


MVC 4 베타 릴리스 정보 ASP.NET

이 문서에서는 Visual Studio 2010용 ASP.NET MVC 4 베타 릴리스에 대해 설명합니다.

참고

최신 릴리스는 아닙니다. ASP.NET MVC 4 RC 릴리스 정보는 여기에서 확인할 수 있습니다.

설치 참고 사항

ASP.NET MVC 4 Beta for Visual Studio 2010은 웹 플랫폼 설치 관리자를 사용하여 ASP.NET MVC 4 홈페이지 에서 설치할 수 있습니다.

ASP.NET MVC 4 베타를 설치하기 전에 이전에 설치된 ASP.NET MVC 4 미리 보기를 제거해야 합니다.

이 릴리스는 .NET Framework 4.5 개발자 미리 보기와 호환되지 않습니다. ASP.NET MVC 4 베타를 설치하기 전에 .NET 4.5 개발자 미리 보기를 제거해야 합니다.

ASP.NET MVC 4를 설치할 수 있으며 ASP.NET MVC 3과 함께 실행할 수 있습니다.

설명서

ASP.NET MVC 문서는 다음 URL의 MSDN 웹사이트에서 제공됩니다.

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

ASP.NET MVC에 대한 자습서 및 기타 정보는 ASP.NET 웹 사이트(https://www.asp.net/mvc/mvc4)의 MVC 4 페이지에서 확인할 수 있습니다.

지원

이 릴리스는 미리 보기 릴리스이며 공식적으로 지원되지 않습니다. 이 릴리스 작업에 대한 질문이 있는 경우 ASP.NET MVC 포럼(https://forums.asp.net/1146.aspx)에 게시합니다. 여기서 ASP.NET 커뮤니티의 구성원은 비공식적인 지원을 자주 제공할 수 있습니다.

소프트웨어 요구 사항

Visual Studio용 ASP.NET MVC 4 구성 요소에는 PowerShell 2.0 및 Visual Studio 2010 서비스 팩 1 또는 Visual Web Developer Express 2010 서비스 팩 1이 필요합니다.

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

ASP.NET MVC 4는 동일한 컴퓨터에서 ASP.NET MVC 3과 함께 설치할 수 있으므로 ASP.NET MVC 3 애플리케이션을 ASP.NET MVC 4로 업그레이드할 시기를 유연하게 선택할 수 있습니다.

업그레이드하는 가장 간단한 방법은 새 ASP.NET MVC 4 프로젝트를 만들고 기존 MVC 3 프로젝트의 모든 보기, 컨트롤러, 코드 및 콘텐츠 파일을 새 프로젝트로 복사한 다음 새 프로젝트의 어셈블리 참조를 이전 프로젝트와 일치하도록 업데이트하는 것입니다. MVC 3 프로젝트에서 Web.config 파일을 변경한 경우 해당 변경 내용을 MVC 4 프로젝트의 Web.config 파일에 병합해야 합니다.

기존 ASP.NET MVC 3 애플리케이션을 버전 4로 수동으로 업그레이드하려면 다음을 수행합니다.

  1. 프로젝트의 모든 Web.config 파일(프로젝트의 루트에 하나, Views 폴더에 하나씩, 프로젝트의 각 영역에 대한 Views 폴더에 하나씩 있음)에서 다음 텍스트의 모든 instance 바꿉 있습니다.

    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
    

    은 다음 해당 텍스트와 함께 제공됩니다.

    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 파일에서 webPages:Version 요소를 "2.0.0.0"으로 업데이트하고 값이 "true" 인 새 PreserveLoginUrl 키를 추가합니다.

    <appSettings>
      <add key="webpages:Version" value="2.0.0.0" />
      <add key="PreserveLoginUrl" value="true" />
    </appSettings>
    
  3. 솔루션 탐색기 System.Web.Mvc(버전 3 DLL을 가리키는)에 대한 참조를 삭제합니다. 그런 다음 System.Web.Mvc (v4.0.0.0)에 대한 참조를 추가합니다. 특히 어셈블리 참조를 업데이트하려면 다음을 변경합니다. 세부 정보는 다음과 같습니다.

    1. 솔루션 탐색기 다음 어셈블리에 대한 참조를 삭제합니다.

      • System.Web.Mvc(v3.0.0.0)
      • System.Web.WebPages(v1.0.0.0)
      • System.Web.Razor(v1.0.0.0)
      • System.Web.WebPages.Deployment(v1.0.0.0)
      • System.Web.WebPages.Razor(v1.0.0.0)
    2. 다음 어셈블리에 대한 참조를 추가합니다.

      • System.Web.Mvc(v4.0.0.0)
      • System.Web.WebPages(v2.0.0.0)
      • System.Web.Razor(v2.0.0.0)
      • System.Web.WebPages.Deployment(v2.0.0.0)
      • System.Web.WebPages.Razor(v2.0.0.0)
  4. 솔루션 탐색기 프로젝트 이름을 마우스 오른쪽 단추로 클릭한 다음 프로젝트 언로드를 선택합니다. 그런 다음, 이름을 다시 마우스 오른쪽 단추로 클릭하고 ProjectName.csproj 편집을 선택합니다.

  5. ProjectTypeGuids 요소를 찾아 {E53F8FEA-EAE0-44A6-8774-FFD645390401}을 {E3E379DF-F4C6-4180-9B81-6769533ABE47}으로 바꿉니다.

  6. 변경 내용을 저장하고 편집 중인 프로젝트(.csproj) 파일을 닫고 프로젝트를 마우스 오른쪽 단추로 클릭한 다음 프로젝트 다시 로드를 선택합니다.

  7. 프로젝트에서 이전 버전의 ASP.NET MVC를 사용하여 컴파일된 타사 라이브러리를 참조하는 경우 루트 Web.config 파일을 열고 구성 섹션 아래에 다음 세 개의 bindingRedirect 요소를 추가합니다.

    <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 베타의 새로운 기능

이 섹션에서는 ASP.NET MVC 4 베타 릴리스에 도입된 기능에 대해 설명합니다.

ASP.NET Web API

ASP.NET MVC 4에는 이제 브라우저 및 모바일 디바이스를 포함하여 광범위한 클라이언트에 도달할 수 있는 HTTP 서비스를 만들기 위한 새로운 프레임워크인 ASP.NET Web API 포함되어 있습니다. ASP.NET Web API RESTful 서비스를 빌드하기 위한 이상적인 플랫폼이기도 합니다.

ASP.NET Web API 다음 기능에 대한 지원이 포함되어 있습니다.

  • 최신 HTTP 프로그래밍 모델: 강력한 형식의 새 HTTP 개체 모델을 사용하여 Web API에서 HTTP 요청 및 응답에 직접 액세스하고 조작합니다. 동일한 프로그래밍 모델 및 HTTP 파이프라인은 새 HttpClient 형식을 통해 클라이언트에서 대칭적으로 사용할 수 있습니다.
  • 경로에 대한 전체 지원: 이제 Web API는 경로 매개 변수 및 제약 조건을 포함하여 항상 웹 스택의 일부였던 전체 경로 기능 집합을 지원합니다. 또한 작업에 매핑하면 규칙이 완전히 지원되므로 클래스 및 메서드에 [HttpPost]와 같은 특성을 더 이상 적용할 필요가 없습니다.
  • 콘텐츠 협상: 클라이언트와 서버가 함께 작동하여 API에서 반환되는 데이터에 적합한 형식을 결정할 수 있습니다. XML, JSON 및 양식 URL로 인코딩된 형식에 대한 기본 지원을 제공하며, 고유한 포맷터를 추가하여 이 지원을 확장하거나 기본 콘텐츠 협상 전략을 대체할 수도 있습니다.
  • 모델 바인딩 및 유효성 검사: 모델 바인더는 HTTP 요청의 다양한 부분에서 데이터를 추출하고 해당 메시지 파트를 Web API 작업에서 사용할 수 있는 .NET 개체로 변환하는 쉬운 방법을 제공합니다.
  • 필터: 이제 Web API는 [Authorize] 특성과 같은 잘 알려진 필터를 포함하여 필터를 지원합니다. 작업, 권한 부여 및 예외 처리에 대한 사용자 고유의 필터를 작성하고 연결할 수 있습니다.
  • 쿼리 컴퍼지션: IQueryable<T>를 반환하면 Web API는 OData URL 규칙을 통한 쿼리를 지원합니다.
  • HTTP 세부 정보의 테스트 용이성 향상: 정적 컨텍스트 개체에서 HTTP 세부 정보를 설정하는 대신 Web API 작업은 이제 HttpRequestMessage 및 HttpResponseMessage 인스턴스에서 작동할 수 있습니다. 이러한 개체의 제네릭 버전도 존재하여 HTTP 형식 외에도 사용자 지정 형식을 사용할 수 있습니다.
  • DependencyResolver를 통해 IoC(제어 반전) 개선: 이제 Web API는 MVC의 종속성 확인자에서 구현한 서비스 로케이터 패턴을 사용하여 다양한 기능에 대한 인스턴스를 가져옵니다.
  • 코드 기반 구성: Web API 구성은 코드를 통해서만 수행되며 구성 파일은 클린.
  • 자체 호스트: Web API는 경로 및 Web API의 다른 기능의 전체 기능을 사용하는 동안 IIS 외에 사용자 고유의 프로세스에서 호스트할 수 있습니다.

ASP.NET Web API 대한 자세한 내용은 을 방문https://www.asp.net/web-api하세요.

ASP.NET 단일 페이지 애플리케이션

ASP.NET MVC 4에는 이제 JavaScript 및 Web API를 사용하여 중요한 클라이언트 쪽 상호 작용을 통해 단일 페이지 애플리케이션을 빌드하기 위한 환경의 초기 미리 보기가 포함되어 있습니다. 이러한 지원이 다음을 포함합니다.

  • 캐시된 데이터와의 풍부한 로컬 상호 작용을 위한 JavaScript 라이브러리 집합
  • 작업 단위 및 DAL 지원을 위한 추가 Web API 구성 요소
  • 빠르게 시작할 스캐폴딩이 있는 MVC 프로젝트 템플릿

ASP.NET MVC 4의 단일 페이지 애플리케이션 지원에 대한 자세한 내용은 을 방문 https://www.asp.net/single-page-application하세요.

기본 프로젝트 템플릿의 향상된 기능

새 ASP.NET MVC 4 프로젝트를 만드는 데 사용되는 템플릿이 최신 웹 사이트를 만들기 위해 업데이트되었습니다.

기본 프로젝트 템플릿의 브라우저 보기 스크린샷

새로운 템플릿에는 외관 개선 사항 외에도 향상된 기능이 있습니다. 템플릿은 적응형 렌더링이라는 기술을 사용하여 사용자 지정 없이 데스크톱 브라우저와 모바일 브라우저 모두에서 멋지게 보입니다.

기본 프로젝트 템플릿의 모바일 브라우저 보기 스크린샷

적응형 렌더링이 작동하는 것을 보려면 모바일 에뮬레이터를 사용하거나 데스크톱 브라우저 창의 크기를 더 작게 조정해 볼 수 있습니다. 브라우저 창이 충분히 작아지면 페이지의 레이아웃이 변경됩니다.

기본 프로젝트 템플릿의 또 다른 향상된 기능은 JavaScript를 사용하여 더 풍부한 UI를 제공하는 것입니다. 템플릿에 사용되는 로그인 및 등록 링크는 jQuery UI 대화 상자를 사용하여 풍부한 로그인 화면을 표시하는 방법의 예입니다.

화면의 기본 프로젝트 템플릿 로그 스크린샷

모바일 프로젝트 템플릿

새 프로젝트를 시작하고 모바일 및 태블릿 브라우저용 사이트를 특별히 만들려는 경우 새 모바일 애플리케이션 프로젝트 템플릿을 사용할 수 있습니다. 이는 터치 최적화 UI를 빌드하기 위한 오픈 소스 라이브러리인 jQuery Mobile을 기반으로 합니다.

기본 프로젝트 템플릿 로그 화면의 모바일 브라우저 보기 스크린샷

이 템플릿은 인터넷 애플리케이션 템플릿과 동일한 애플리케이션 구조를 포함하지만(컨트롤러 코드는 거의 동일함) 터치 기반 모바일 디바이스에서 잘 보이고 잘 작동하도록 jQuery Mobile을 사용하여 스타일이 지정됩니다. 모바일 UI를 구조화하고 스타일을 지정하는 방법에 대한 자세한 내용은 jQuery Mobile 프로젝트 웹 사이트를 참조하세요.

모바일 최적화 보기를 추가하려는 데스크톱 지향 사이트가 이미 있거나 데스크톱 및 모바일 브라우저에 다르게 스타일이 지정된 보기를 제공하는 단일 사이트를 만들려는 경우 새 디스플레이 모드 기능을 사용할 수 있습니다. (다음 섹션을 참조하세요.)

디스플레이 모드

새 디스플레이 모드 기능을 사용하면 애플리케이션이 요청을 만드는 브라우저에 따라 보기를 선택할 수 있습니다. 예를 들어 데스크톱 브라우저가 홈 페이지를 요청하는 경우 애플리케이션은 Views\Home\Index.cshtml 템플릿을 사용할 수 있습니다. 모바일 브라우저가 홈 페이지를 요청하는 경우 애플리케이션은 Views\Home\Index.mobile.cshtml 템플릿을 반환할 수 있습니다.

레이아웃 및 부분도 특정 브라우저 유형에 대해 재정의할 수 있습니다. 예:

  • Views\Shared 폴더에 _Layout.cshtml 및 _Layout.mobile.cshtml 템플릿이 모두 포함된 경우 기본적으로 애플리케이션은 모바일 브라우저에서 요청하는 동안 _Layout.mobile.cshtml을 사용하고 다른 요청 중에는 _Layout.cshtml을 사용합니다.
  • 폴더에 _MyPartial.cshtml과 _MyPartial.mobile.cshtml이 모두 포함된 경우 "_MyPartial")는 @Html.Partial(모바일 브라우저에서 요청하는 동안 _MyPartial.mobile.cshtml을 렌더링하고 다른 요청 중에는 _MyPartial.cshtml을 렌더링합니다.

다른 디바이스에 대한 보다 구체적인 보기, 레이아웃 또는 부분 보기를 만들려는 경우 새 DefaultDisplayMode instance 등록하여 요청이 특정 조건을 충족할 때 검색할 이름을 지정할 수 있습니다. 예를 들어 Global.asax 파일의 Application_Start 메서드에 다음 코드를 추가하여 Apple iPhone 브라우저가 요청할 때 적용되는 표시 모드로 "iPhone" 문자열을 등록할 수 있습니다.

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

이 코드가 실행된 후 Apple iPhone 브라우저에서 요청을 하면 애플리케이션에서 Views\Shared\_Layout.iPhone.cshtml 레이아웃(있는 경우)을 사용합니다.

jQuery Mobile, 뷰 전환기 및 브라우저 재정의

jQuery Mobile은 터치 최적화 웹 UI를 빌드하기 위한 오픈 소스 라이브러리입니다. ASP.NET MVC 4 애플리케이션에서 jQuery Mobile을 사용하려는 경우 시작하는 데 도움이 되는 NuGet 패키지를 다운로드하여 설치할 수 있습니다. Visual Studio 패키지 관리자 콘솔에서 설치하려면 다음 명령을 입력합니다.

Install-Package jQuery.Mobile.MVC

그러면 jQuery Mobile 및 다음을 포함한 일부 도우미 파일이 설치됩니다.

  • views/shared/_Layout.Mobile.cshtml- jQuery Mobile 기반 레이아웃입니다.
  • View/Shared/_ViewSwitcher.cshtml 부분 보기 및 ViewSwitcherController.cs 컨트롤러로 구성된 뷰 전환기 구성 요소입니다.

패키지를 설치한 후 모바일 브라우저(또는 Firefox 사용자 에이전트 전환기 추가 기능과 같은)를 사용하여 애플리케이션을 실행합니다. jQuery Mobile이 레이아웃 및 스타일을 처리하므로 페이지가 매우 다르게 표시됩니다. 이를 활용하려면 다음을 수행할 수 있습니다.

  • 이전 의 디스플레이 모드 에서 설명한 대로 모바일별 보기 재정의를 만듭니다(예: Views\Home\Index.mobile.cshtml을 만들어 모바일 브라우저의 경우 Views\Home\Index.cshtml을 재정의).
  • 모바일 보기에서 터치 최적화 UI 요소를 추가하는 방법에 대한 자세한 내용은 jQuery Mobile 설명서를 참조하세요.

모바일에 최적화된 웹 페이지에 대한 규칙은 텍스트가 데스크톱 보기 또는 전체 사이트 모드와 같은 링크를 추가하여 사용자가 데스크톱 버전의 페이지로 전환할 수 있도록 하는 것입니다. jQuery.Mobile.MVC 패키지에는 이러한 용도에 대한 샘플 뷰 전환기 구성 요소가 포함되어 있습니다. 기본 Views\Shared\_Layout.Mobile.cshtml 보기에서 사용되며 페이지가 렌더링될 때 다음과 같이 표시됩니다.

모바일 보기 및 데스크톱 보기 링크의 스크린샷.

방문자가 링크를 클릭하면 동일한 페이지의 데스크톱 버전으로 전환됩니다.

데스크톱 레이아웃에는 기본적으로 보기 전환기가 포함되지 않으므로 방문자는 모바일 모드로 전환할 수 없습니다. 이를 사용하도록 설정하려면 본문> 요소 바로 안쪽의 데스크톱 레이아웃에 _ViewSwitcher 다음 참조를< 추가합니다.

<body>
    @Html.Partial("_ViewSwitcher")
    ...

보기 전환기는 브라우저 재정의라는 새로운 기능을 사용합니다. 이 기능을 사용하면 애플리케이션이 요청을 실제로 사용한 브라우저(사용자 에이전트)와 다른 브라우저에서 온 것처럼 처리할 수 있습니다. 다음 표에서는 브라우저 재정의에서 제공하는 메서드를 나열합니다.

HttpContext.SetOverriddenBrowser(userAgentString) 지정된 사용자 에이전트를 사용하여 요청의 실제 사용자 에이전트 값을 재정의합니다.
HttpContext.GetOverriddenUserAgent() 재정의가 지정되지 않은 경우 요청의 사용자 에이전트 재정의 값 또는 실제 사용자 에이전트 문자열을 반환합니다.
HttpContext.GetOverriddenBrowser() 현재 요청에 대해 설정된 사용자 에이전트(실제 또는 재정의됨)에 해당하는 HttpBrowserCapabilitiesBase instance 반환합니다. 이 값을 사용하여 IsMobileDevice와 같은 속성을 가져올 수 있습니다.
HttpContext.ClearOverriddenBrowser() 현재 요청에 대해 재정의된 사용자 에이전트를 제거합니다.

브라우저 재정의는 ASP.NET MVC 4의 핵심 기능이며 jQuery.Mobile.MVC 패키지를 설치하지 않은 경우에도 사용할 수 있습니다. 그러나 보기, 레이아웃 및 부분 보기 선택만 영향을 줍니다. Request.Browser 개체에 의존하는 다른 ASP.NET 기능에는 영향을 주지 않습니다.

기본적으로 사용자 에이전트 재정의는 쿠키를 사용하여 저장됩니다. 재정의를 다른 곳에 저장하려는 경우(예: 데이터베이스에서) 기본 공급자(BrowserOverrideStores.Current)를 바꿀 수 있습니다. 이 공급자에 대한 설명서는 ASP.NET MVC의 이후 릴리스와 함께 사용할 수 있습니다.

Visual Studio에서 코드 생성을 위한 레시피

새로운 레시피 기능을 사용하면 Visual Studio에서 NuGet을 사용하여 설치할 수 있는 패키지에 따라 솔루션별 코드를 생성할 수 있습니다. Recipes 프레임워크를 사용하면 개발자가 코드 생성 플러그 인을 쉽게 작성할 수 있으며, 이를 사용하여 영역 추가, 컨트롤러 추가 및 보기 추가에 대한 기본 제공 코드 생성기를 바꿀 수도 있습니다. 레시피는 NuGet 패키지로 배포되므로 소스 제어에 쉽게 체크 인하고 프로젝트의 모든 개발자와 자동으로 공유할 수 있습니다. 솔루션별로 사용할 수도 있습니다.

비동기 컨트롤러에 대한 작업 지원

이제 Task 또는 <Task ActionResult> 형식의 개체를 반환하는 단일 메서드로 비동기 작업 메서드를 작성할 수 있습니다.

예를 들어 Visual C# 5를 사용하거나 비동기 CTP를 사용하는 경우 다음과 같은 비동기 작업 메서드를 만들 수 있습니다.

public async Task<ActionResult> Index(string city) {
    var newsService = new NewsService();
    var sportsService = new SportsService();
    
    return View("Common",
        new PortalViewModel {
        NewsHeadlines = await newsService.GetHeadlinesAsync(),
        SportsScores = await sportsService.GetScoresAsync()
    });
}

이전 작업 메서드에서 newsService.GetHeadlinesAsyncsportsService.GetScoresAsync에 대한 호출은 비동기적으로 호출되며 스레드 풀에서 스레드를 차단하지 않습니다.

작업 인스턴스를 반환하는 비동기 작업 메서드는 시간 제한을 지원할 수도 있습니다. 작업 메서드를 취소할 수 있도록 하려면 CancellationToken 형식의 매개 변수를 작업 메서드 서명에 추가합니다. 다음 예제에서는 시간 제한이 2500밀리초이고 시간 제한이 발생할 경우 클라이언트에 TimedOut 보기를 표시하는 비동기 작업 메서드를 보여 줍니다.

[AsyncTimeout(2500)]
[HandleError(ExceptionType = typeof(TaskCanceledException), View = "TimedOut")]
public async Task<ActionResult> Index(string city,
    CancellationToken cancellationToken) {
    var newsService = new NewsService();
    var sportsService = new SportsService();
   
    return View("Common",
        new PortalViewModel {
        NewsHeadlines = await newsService.GetHeadlinesAsync(cancellationToken),
        SportsScores = await sportsService.GetScoresAsync(cancellationToken)
    });
}

Azure SDK

ASP.NET MVC 4 베타는 Windows Azure SDK의 2011년 9월 1.5 릴리스를 지원합니다.

알려진 문제 및 호환성이 손상되는 변경

  • ASP.NET MVC 4 베타를 설치한 후 Visual Studio 2010 서비스 팩 1 CSHTML/VBHTML 편집기에서 CSHTML/VBHTML 편집기는 cshtml 또는 vbhtml 파일 내에 코드 조각 또는 JavaScript를 입력한 후 오랫동안 일시 중지될 수 있습니다. 이는 방금 만들어졌지만 아직 컴파일되지 않은 ASP.NET MVC 4 애플리케이션에서만 발생합니다.

    해결 방법은 프로젝트를 컴파일하여 bin 폴더에 어셈블리를 가져오는 것입니다. bin 폴더에서 어셈블리를 제거하는 프로젝트를 클린 경우 편집기 문제가 다시 발생합니다.

    이 문제는 다음 릴리스에서 수정됩니다.

  • Visual Studio 11 베타용 C# 프로젝트 템플릿에는 Global.asax.cs에 잘못된 연결 문자열이 포함되어 있습니다. Visual Studio 11 Beta에서 만든 프로젝트의 Application_Start 메서드에 지정된 기본 연결에는 이스케이프되지 않은 백슬래시() 문자가 포함된 LocalDB 연결 문자열이 포함되어 있습니다. 이렇게 하면 SqlException을 생성하는 Entity Framework DbContext에 액세스하려고 할 때 연결 오류가 발생합니다.

    이 문제를 해결하려면 다음과 같이 읽도록 Global.asax.cs의 App_Start 메서드에서 백슬래시 문자를 이스케이프합니다.

    Database.DefaultConnectionFactory = 
       new SqlConnectionFactory(
         "Data Source=(localdb)\\v11.0; Integrated Security=True; MultipleActiveResultSets=True");
    
  • .NET 4.5를 대상으로 하는 MVC 4 애플리케이션을 ASP.NET .NET 4.0에서 실행할 때 System.Net.Http.dll 어셈블리에 액세스하려고 하면 FileLoadException이 throw됩니다. ASP.NET .NET 4.5에서 만든 MVC 4 애플리케이션에는 .NET 4.0이 설치된 시스템에서 애플리케이션이 실행될 때 "파일 또는 어셈블리 'System.Net.Http' 또는 해당 종속성 중 하나를 로드할 수 없습니다."라는 FileLoadException이 발생하는 바인딩 리디렉션이 포함되어 있습니다. 이 문제를 해결하려면 web.config 다음 바인딩 리디렉션을 제거합니다.

    <dependentAssembly>
     <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" 
        culture="neutral" />
     <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
    </dependentAssembly>
    

    수정된 web.config 어셈블리 바인딩 요소는 다음과 같이 표시됩니다.

    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
     <dependentAssembly>
      <assemblyIdentity name="System.Web.Helpers" 
        publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
     </dependentAssembly>
     <dependentAssembly>
      <assemblyIdentity name="System.Web.Mvc" 
        publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
     </dependentAssembly>
     <dependentAssembly>
      <assemblyIdentity name="System.Web.WebPages" 
        publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
     </dependentAssembly>
    </assemblyBinding>
    
  • Visual Basic 프로젝트의 "컨트롤러 추가" 항목 템플릿은 영역 내에서 호출될 때 잘못된 네임스페이스를 생성합니다. Visual Basic을 사용하는 ASP.NET MVC 프로젝트의 영역에 컨트롤러를 추가하면 항목 템플릿이 잘못된 네임스페이스를 컨트롤러에 삽입합니다. 컨트롤러에서 작업으로 이동할 때 "파일을 찾을 수 없음" 오류가 발생합니다.

    생성된 네임스페이스는 루트 네임스페이스 다음에 있는 모든 항목을 생략합니다. 예를 들어 생성된 네임스페이스는 RootNamespace이지만 RootNamespace.Areas.AreaName.Controllers여야 합니다.

  • Razor 뷰 엔진의 호환성이 손상되는 변경 Razor 파서 다시 쓰기의 일부로 System.Web.Mvc.Razor에서 다음 형식이 제거되었습니다.

    • ModelSpan
    • MvcVBRazorCodeGenerator
    • MvcCSharpRazorCodeGenerator
    • MvcVBRazorCodeParser

    다음 메서드도 제거되었습니다.

    • MvcCSharpRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
    • MvcWebPageRazorHost.DecorateCodeGenerator(System.Web.Razor.Generator.RazorCodeGenerator)
    • MvcVBRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
  • WebMatrix.WebData.dll ASP.NET MVC 4 앱의 /bin 디렉터리에 포함되면 양식 인증에 대한 URL을 인수합니다. 애플리케이션에 WebMatrix.WebData.dll 어셈블리를 추가합니다(예: 배포 가능한 종속성 추가 대화 상자를 사용할 때 "Razor 구문으로 ASP.NET 웹 페이지"을 선택하여)는 기본 ASP.NET MVC 계정 컨트롤러에서 예상한 대로 /account/logn이 아닌 /account/logon으로 인증 로그인 리디렉션을 재정의합니다. 이 동작을 방지하고 web.config 인증 섹션에 이미 지정된 URL을 사용하려면 PreserveLoginUrl이라는 appSetting을 추가하고 true로 설정할 수 있습니다.

    <appSettings>
        <add key="PreserveLoginUrl" value="true"/>
    </appSettings>
    
  • Visual Studio 2010 및 Visual Web Developer 2010의 병렬 설치를 위해 ASP.NET MVC 4를 설치하려고 하면 NuGet 패키지 관리자가 설치되지 않습니다. Visual Studio 2010 및 Visual Web Developer 2010을 ASP.NET MVC 4와 나란히 실행하려면 두 버전의 Visual Studio가 이미 설치된 후 ASP.NET MVC 4를 설치해야 합니다.

  • 필수 구성 요소가 이미 제거된 경우 MVC 4에 ASP.NET 제거가 실패합니다. ASP.NET MVC 4를 완전히 제거하려면 Visual Studio를 제거하기 전에 ASP.NET MVC 4를 제거해야 합니다.

  • 기본 Web API 프로젝트를 실행하면 존재하지 않는 RegisterApis 메서드를 사용하여 경로를 추가하도록 사용자에게 잘못 지시하는 지침이 표시됩니다. 경로는 ASP.NET 경로 테이블을 사용하여 RegisterRoutes 메서드에 추가해야 합니다.

  • ASP.NET MVC 4 베타 설치는 MVC 3 RTM 애플리케이션을 ASP.NET 중단합니다. RTM 릴리스로 만든 MVC 3 애플리케이션을 ASP.NET(ASP.NET MVC 3 도구 업데이트 릴리스가 아님) ASP.NET MVC 4 베타와 함께 작동하려면 다음 변경 사항이 필요합니다. 이러한 업데이트를 수행하지 않고 프로젝트를 빌드하면 컴파일 오류가 발생합니다.

    필수 업데이트

    1. 루트 Web.config 파일에서 key webPages>:Version 및 값 1.0.0.0을 사용하여 새< appSettings 항목을 추가합니다.

      <appSettings>
          <add key="webpages:Version" value="1.0.0.0"/>
          <add key="ClientValidationEnabled" value="true"/>
          <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
      </appSettings>
      
    2. 솔루션 탐색기 프로젝트 이름을 마우스 오른쪽 단추로 클릭한 다음 프로젝트 언로드를 선택합니다. 그런 다음 이름을 다시 마우스 오른쪽 단추 로 클릭하고 ProjectName.csproj 편집을 선택합니다.

    3. 다음 어셈블리 참조를 찾습니다.

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

      다음으로 바꿉 있습니다.

      <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) 파일을 닫은 다음 프로젝트를 마우스 오른쪽 단추로 클릭하고 다시 로드를 선택합니다.