Leer en inglés

Compartir a través de


Notas de la versión de ASP.NET MVC 4 Beta

En este documento se describe la versión de ASP.NET MVC 4 Beta para Visual Studio 2010.

Nota

Esta no es la versión más reciente. Las notas de la versión de ASP.NET MVC 4 RC están disponibles aquí.

installation notes (Nota de compatibilidad de SAP n.º 1984787: Notas de instalación de SUSE Linux Enterprise Server 12)

ASP.NET MVC 4 Beta para Visual Studio 2010 se puede instalar desde la página principal de ASP.NET MVC 4 mediante el Instalador de plataforma web.

Para instalar ASP.NET MVC 4 Beta, debe desinstalar las versiones preliminares instaladas anteriores de ASP.NET MVC 4.

Esta versión no es compatible con la versión preliminar para desarrolladores de NET Framework 4.5. Debe desinstalar la versión preliminar para desarrolladores de .NET 4.5 antes de instalar ASP.NET MVC 4 Beta.

ASP.NET MVC 4 se puede instalar y ejecutar en paralelo con ASP.NET MVC 3.

Documentación

La documentación de ASP.NET MVC está disponible en el sitio web de MSDN en la siguiente dirección URL:

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

Hay disponibles tutoriales y otra información sobre ASP.NET MVC en la página de MVC 4 del sitio web de ASP.NET (https://www.asp.net/mvc/mvc4).

Soporte técnico

Se trata de una versión preliminar y no se admite oficialmente. Si tiene alguna pregunta sobre cómo trabajar con esta versión, también puede publicarla en el foro de ASP.NET MVC (https://forums.asp.net/1146.aspx), donde los miembros de la comunidad de ASP.NET a menudo pueden proporcionar soporte informal.

Requisitos de software

Los componentes de ASP.NET MVC 4 para Visual Studio requieren PowerShell 2.0 y, además, Visual Studio 2010 con Service Pack 1 o Visual Web Developer Express 2010 con Service Pack 1.

Actualización de un proyecto de ASP.NET MVC 3 a ASP.NET MVC 4

ASP.NET MVC 4 se puede instalar en paralelo con ASP.NET MVC 3 en el mismo equipo, lo que le ofrece la flexibilidad para elegir cuándo actualizar una aplicación ASP.NET MVC 3 a ASP.NET MVC 4.

La manera más sencilla de actualizar es crear un nuevo proyecto de ASP.NET MVC 4 y copiar todas las vistas, controladores, código y archivos de contenido del proyecto MVC 3 existente en el nuevo proyecto y después actualizar las referencias de ensamblado en el nuevo proyecto para que coincidan con cualquier plantilla que no sea de MVC, incluida la que esté usando. Si ha hecho cambios en el archivo Web.config del proyecto MVC 3, también debe combinar esas alteraciones en el archivo Web.config del proyecto MVC 4.

Para actualizar manualmente una aplicación existente de ASP.NET MVC 3 a la versión 4, haga lo siguiente:

  1. En todos los archivos Web.config del proyecto (hay uno en la raíz del proyecto, uno en la carpeta Vistas y otro en la carpeta Vistas de cada área del proyecto), reemplace cada instancia del texto siguiente:

    Consola
    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
    

    con el texto correspondiente siguiente:

    Consola
    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. En el archivo raíz Web.config, actualice el elemento webPages:Version a "2.0.0.0" y agregue una nueva clave PreserveLoginUrl que tenga el valor "true":

    XML
    <appSettings>
      <add key="webpages:Version" value="2.0.0.0" />
      <add key="PreserveLoginUrl" value="true" />
    </appSettings>
    
  3. En el Explorador de soluciones, elimine la referencia a System.Web.Mvc (que apunta al archivo DLL de la versión 3). Después agregue una referencia a System.Web.Mvc (v4.0.0.0). En concreto, realice los siguientes cambios para actualizar las referencias de ensamblado. Los detalles son los siguientes:

    1. En el Explorador de soluciones, elimine referencias a los ensamblados siguientes:

      • 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. Agregue una referencia a los ensamblados siguientes:

      • 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. En el Explorador de soluciones, haga clic con el botón derecho en el nombre del proyecto y luego seleccione Descargar proyecto. Después, vuelva a hacer clic con el botón derecho en el nombre y seleccione Editar ProjectName.csproj.

  5. Busque el elemento ProjectTypeGuids y reemplace {E53F8FEA-EAE0-44A6-8774-FFD645390401} por {E3E379DF-F4C6-4180-9B81-6769533ABE47}.

  6. Guarde los cambios, cierre el archivo del proyecto (.csproj) que estaba editando, haga clic con el botón derecho en el proyecto y después seleccione Volver a cargar proyecto.

  7. Si el proyecto hace referencia a bibliotecas de terceros que se compilan con versiones anteriores de ASP.NET MVC, abra el archivo web.config raíz y agregue los tres elementos bindingRedirect siguientes en la sección configuración :

    XML
    <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>
    

Nuevas características de ASP.NET MVC 4 Beta

En esta sección se describen las características que se han introducido en la versión ASP.NET MVC 4 Beta.

ASP.NET Web API

ASP.NET MVC 4 ahora incluye ASP.NET Web API, un nuevo marco para crear servicios HTTP que pueden llegar a una amplia gama de clientes, incluidos exploradores y dispositivos móviles. ASP.NET Web API es una plataforma ideal para desarrollar también servicios de RESTful.

ASP.NET Web API incluye compatibilidad con las siguientes características:

  • Modelo de programación HTTP moderno: Acceda directamente y manipule las solicitudes y respuestas HTTP en las API web mediante un nuevo modelo de objetos HTTP fuertemente tipado. El mismo modelo de programación y canalización HTTP está disponible simétricamente en el cliente a través del nuevo tipo HttpClient.
  • Compatibilidad completa con rutas: las API web ahora admiten el conjunto completo de funcionalidades de ruta que siempre han sido parte de la pila web, incluidos los parámetros de ruta y las restricciones. Además, la asignación a acciones tiene compatibilidad completa con las convenciones, por lo que ya no es necesario aplicar atributos como [HttpPost] a las clases y métodos.
  • Negociación de contenido: el cliente y el servidor pueden funcionar conjuntamente para determinar el formato adecuado de los datos que se devuelven desde una API. Proporcionamos compatibilidad predeterminada con formatos codificados con URL de formulario, JSON y XML, que usted puede ampliar agregando formateadores propios o incluso reemplazar la estrategia de negociación de contenido predeterminada.
  • Enlace de modelos y validación: los enlazadores de modelos proporcionan una manera sencilla de extraer datos de varias partes de una solicitud HTTP y convierten esos elementos de mensaje en objetos .NET que las acciones de la API Web pueden usar.
  • Filtros: las API Web ahora admiten filtros, incluidos filtros conocidos, como el atributo [Authorize]. Puede crear y conectar sus propios filtros para acciones, autorización y control de excepciones.
  • Composición de consultas: simplemente devolviendo IQueryable<T>, la API Web admitirá la consulta a través de las convenciones de dirección URL de OData.
  • Comprobación mejorada de detalles de HTTP: en lugar de establecer detalles de HTTP en objetos de contexto estáticos, las acciones de API web ahora pueden funcionar con instancias de HttpRequestMessage y HttpResponseMessage. Las versiones genéricas de estos objetos también existen para permitirle trabajar con los tipos personalizados además de los tipos de HTTP.
  • Inversión mejorada de control (IdC) a través de DependencyResolver: la API Web usa ahora el patrón de localizador de servicios implementado por el solucionador de dependencias de MVC para obtener instancias de muchas instalaciones diferentes.
  • Configuración basada en código: la configuración de la API Web se hace únicamente a través del código, dejando limpios los archivos de configuración.
  • Autohospedaje: las API Web se pueden hospedar en su propio proceso, además de IIS, mientras siguen usando toda la eficacia de las rutas y otras características de la API Web.

Para obtener más información sobre ASP.NET Web API, visite https://www.asp.net/web-api.

Aplicación de página única de ASP.NET

ASP.NET MVC 4 ahora incluye una versión preliminar temprana de la experiencia para crear aplicaciones de página única con interacciones significativas del lado del cliente mediante JavaScript y API Web. Esta compatibilidad incluye:

  • Un conjunto de bibliotecas de JavaScript para interacciones locales más enriquecidas con datos almacenados en caché
  • Componentes adicionales de la API Web para la compatibilidad con unidades de trabajo y DAL
  • Una plantilla de proyecto de MVC con scaffolding para empezar a trabajar rápidamente

Para obtener más información sobre la compatibilidad con la aplicación de página única en ASP.NET MVC 4, visite https://www.asp.net/single-page-application.

Mejoras en las plantillas de proyecto predeterminadas

La plantilla que se usa para crear nuevos proyectos de ASP.NET MVC 4 se ha actualizado para crear un sitio con una apariencia más moderna:

Screenshot of the browser view of the default project template.

Además de las mejoras estéticas, hay una funcionalidad mejorada de la nueva plantilla. La plantilla emplea una técnica denominada representación adaptable para tener una buena apariencia exploradores de dispositivos de escritorio y móviles sin ninguna personalización.

Screenshot of the mobile browser view of the default project template.

Para ver la representación adaptable en acción, puede usar un emulador móvil o simplemente intentar cambiar el tamaño de la ventana del explorador de escritorio para que sea más pequeña. Cuando la ventana del explorador sea lo suficientemente pequeña, cambiará el diseño de la página.

Otra mejora de la plantilla de proyecto predeterminada es el uso de JavaScript para proporcionar una interfaz de usuario más completa. Los vínculos Inicio de sesión y Registro que se usan en la plantilla son ejemplos de cómo usar el cuadro de diálogo de la interfaz de usuario de jQuery para presentar una pantalla de inicio de sesión enriquecida:

Screenshot of the default project template log on screen.

Plantillas de proyecto para dispositivos móviles

Si va a iniciar un nuevo proyecto y quiere crear un sitio específicamente para exploradores en móviles y tabletas, puede usar la nueva plantilla de proyecto para aplicaciones móviles. Se basa en jQuery Mobile, una biblioteca de código abierto para crear una interfaz de usuario optimizada para entrada táctil:

Screenshot of the mobile browser view of the default project template log on screen.

Esta plantilla contiene la misma estructura de aplicación que la plantilla de aplicación de Internet (y el código del controlador es prácticamente idéntico), pero adquiere su estilo mediante jQuery Mobile para que obtenga una buena apariencia y funcione adecuadamente en dispositivos móviles basados en la entrada táctil. Para obtener más información sobre cómo se estructura y se aplica un estilo a la interfaz de usuario móvil, consulte el sitio web del proyecto jQuery Mobile.

Si ya tiene un sitio diseñado para escritorio al que quiere agregar vistas optimizadas para dispositivos móviles, o si busca crear un único sitio que sirva vistas de estilo diferente en exploradores móviles y de escritorio, puede usar la nueva característica Modos de visualización. (Consulte la sección siguiente).

Modos de presentación

La nueva característica Modos de visualización permite a una aplicación seleccionar vistas en función del explorador que hace la solicitud. Por ejemplo, si un explorador de escritorio solicita la página principal, la aplicación puede usar la plantilla Views\Home\Index.cshtml. Si un explorador en un dispositivo móvil solicita la página principal, la aplicación puede devolver la plantilla Views\Home\Index.mobile.cshtml.

Los diseños y las vistas parciales también se pueden invalidar para determinados tipos de explorador. Por ejemplo:

  • Si la carpeta Views\Shared contiene las plantillas _Layout.cshtml y _Layout.mobile.cshtml, de forma predeterminada la aplicación usará _Layout.mobile.cshtml durante las solicitudes de exploradores en dispositivos móviles y _Layout.cshtml durante otras solicitudes.
  • Si una carpeta contiene _MyPartial.cshtml y _MyPartial.mobile.cshtml, la instrucción @Html.Partial("_MyPartial") representará _MyPartial.mobile.cshtml en las solicitudes de exploradores en dispositivos móviles y _MyPartial.cshtml durante otras solicitudes.

Si quiere crear vistas, diseños o vistas parciales más específicas para otros dispositivos, puede registrar una nueva instancia DefaultDisplayMode para especificar qué nombre se busca cuando una solicitud cumple condiciones concretas. Por ejemplo, podría agregar el código siguiente al método Application_Start en el archivo Global.asax para registrar la cadena "iPhone" como modo de presentación que se aplica cuando el explorador del iPhone de Apple hace una solicitud:

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

Después de ejecutar este código, cuando un explorador de iPhone de Apple hace una solicitud, la aplicación usará el diseño Views\Shared\_Layout.iPhone.cshtml (si existe).

jQuery Mobile, el conmutador de vistas e invalidación del explorador

jQuery Mobile es una biblioteca de código abierto para crear una interfaz de usuario web optimizada para uso táctil. Si desea usar jQuery Mobile con una aplicación ASP.NET MVC 4, puede descargar e instalar un paquete NuGet que le ayudará a empezar. Para instalarlo desde la consola del Administrador de paquetes de Visual Studio, escriba el siguiente comando:

PowerShell
Install-Package jQuery.Mobile.MVC

Esto instala jQuery Mobile y algunos archivos auxiliares, incluidos los siguientes:

  • Views/Shared/_Layout.Mobile.cshtml, que es un diseño basado en jQuery Mobile.
  • Un componente del conmutador de vista, que consta de la vista parcial Views/Shared/_ViewSwitcher.cshtml y del controlador ViewSwitcherController.cs.

Después de instalar el paquete, ejecute la aplicación mediante un explorador móvil (o equivalente, como el complemento Conmutador del agente de usuario de Firefox). Verá que las páginas tienen un aspecto bastante diferente, ya que jQuery Mobile controla el diseño y el estilo. Para aprovecharlo, puede hacer lo siguiente:

  • Cree invalidaciones de vista específicas para dispositivos móviles como se ha descrito anteriormente en Modos de presentación (por ejemplo, cree Views\Home\Index.mobile.cshtml para invalidar Views\Home\Index.cshtml para exploradores móviles).
  • Lea la documentación de jQuery Mobile para obtener más información sobre cómo agregar elementos de interfaz de usuario optimizados para el uso táctil en vistas móviles.

Una convención para las páginas web optimizadas para dispositivos móviles es agregar un vínculo cuyo texto sea similar a Vista de escritorio o Modo de sitio completo que permita a los usuarios cambiar a una versión para escritorio de la página. El paquete jQuery.Mobile.MVC incluye un componente de modificador de vista de ejemplo para este propósito. Se usa en la vista Views\Shared\_Layout.Mobile.cshtml predeterminada y tiene este aspecto cuando se representa la página:

Screenshot of the mobile view and desktop view links.

Si los visitantes hacen clic en el vínculo, se cambian a la versión de escritorio de la misma página.

Dado que el diseño de escritorio no incluirá un modificador de vista de forma predeterminada, los visitantes no tendrán ninguna manera de acceder al modo móvil. Para habilitarlo, agregue la siguiente referencia a _ViewSwitcher al diseño de escritorio, justo dentro del elemento del <cuerpo>:

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

El modificador de vista usa una nueva característica denominada invalidación del explorador. Esta característica permite que la aplicación trate las solicitudes como si proviniesen de un explorador (agente de usuario) diferente del que realmente proceden. En la tabla siguiente se enumeran los métodos que proporciona la invalidación del explorador.

HttpContext.SetOverriddenBrowser(userAgentString) Omite el valor del agente de usuario real de la solicitud mediante el agente de usuario especificado.
HttpContext.GetOverriddenUserAgent() Devuelve el valor de invalidación del agente de usuario de la solicitud o la cadena del agente de usuario real en caso de que no se haya especificado ninguna invalidación.
HttpContext.GetOverriddenBrowser() Devuelve una instancia HttpBrowserCapabilitiesBase que corresponde al agente de usuario establecido actualmente para la solicitud (real o invalidada). Puede usar este valor para obtener propiedades como IsMobileDevice.
HttpContext.ClearOverriddenBrowser() Quita los agentes de usuario invalidados de la solicitud actual.

La invalidación del explorador es una característica principal de ASP.NET MVC 4 y está disponible incluso si no instala el paquete jQuery.Mobile.MVC. Sin embargo, afecta solo a la vista, al diseño y a la selección de vista parcial, no afecta a ninguna otra característica de ASP.NET que dependa del objeto Request.Browser.

De forma predeterminada, la invalidación del agente de usuario se almacena mediante una cookie. Si desea almacenar la invalidación en otra parte (por ejemplo, en una base de datos), puede reemplazar el proveedor predeterminado (BrowserOverrideStores.Current). La documentación de este proveedor estará disponible para acompañar una versión posterior de ASP.NET MVC.

Recetas para la generación de código en Visual Studio

La nueva característica Recetas permite a Visual Studio generar código específico de la solución en función de los paquetes que se pueden instalar mediante NuGet. El marco de Recetas facilita a los desarrolladores escribir complementos de generación de código, que usted también puede usar para reemplazar los generadores de código integrados para Agregar área, Agregar controlador y Agregar vista. Dado que las recetas se implementan como paquetes NuGet, pueden comprobarse fácilmente en el control de código fuente y compartirse con todos los desarrolladores del proyecto automáticamente. También están disponibles por solución.

Compatibilidad de tareas con controladores asincrónicos

Ahora puede escribir métodos de acción asincrónicos como métodos únicos que devuelven un objeto de tipo Tarea o Tarea< ActionResult>.

Por ejemplo, si usa Visual C# 5 (o usa Async CTP), puede crear un método de acción asincrónico similar al siguiente:

C#
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()
    });
}

En el método de acción anterior, las llamadas a newsService.GetHeadlinesAsync y sportsService.GetScoresAsync se llaman asincrónicamente y no bloquean un subproceso del grupo de subprocesos.

Los métodos de acción asincrónicos que devuelven instancias de Tarea también pueden admitir tiempos de espera. Para que el método de acción se pueda cancelar, agregue un parámetro de tipo CancellationToken a la firma del método de acción. En el ejemplo siguiente se muestra un método de acción asincrónico que tiene un tiempo de espera de 2500 milisegundos y que muestra una vista TimedOut al cliente si se produce un tiempo de espera.

C#
[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)
    });
}

SDK de Azure

ASP.NET MVC 4 Beta admite la versión de septiembre de 2011 1.5 del SDK de Windows Azure.

Problemas conocidos y cambios importantes

  • Después de instalar ASP.NET MVC 4 Beta, el editor CSHTML/VBHTML en Visual Studio 2010 Service Pack 1 puede pausarse durante mucho tiempo después de escribir fragmentos de código o JavaScript dentro de archivos cshtml o vbhtml. Esto solo se produce en las aplicaciones de ASP.NET MVC 4 que se acaban de crear y aún no se han compilado.

    La solución consiste en compilar el proyecto para obtener los ensamblados en la carpeta bin. Tenga en cuenta que, si limpia el proyecto que quita los ensamblados de la carpeta bin, el problema del editor volverá.

    Esto se corregirá en la próxima versión.

  • Las plantillas de proyecto de C# para Visual Studio 11 Beta contienen una cadena de conexión incorrecta en Global.asax.cs. La conexión predeterminada especificada en el método Application_Start para los proyectos creados en Visual Studio 11 Beta contiene una cadena de conexión de LocalDB que incluye un carácter de barra diagonal inversa sin ocultar (). Esto produce un error de conexión tras los intentos de obtener acceso a un DbContext de Entity Framework, que genera una excepción SqlException.

    Para corregir este problema, elimine el carácter de barra diagonal inversa en el método App_Start de Global.asax.cs para que se lea lo siguiente:

    C#
    Database.DefaultConnectionFactory = 
       new SqlConnectionFactory(
         "Data Source=(localdb)\\v11.0; Integrated Security=True; MultipleActiveResultSets=True");
    
  • Las aplicaciones de ASP.NET MVC 4 orientadas a .NET 4.5 producirán una FileLoadException al intentar acceder al ensamblado de System.Net.Http.dll cuando se ejecute en .NET 4.0. Las aplicaciones de ASP.NET MVC 4 creadas en .NET 4.5 contienen una redirección de enlace que dará como resultado una FileLoadException que indica "Could not load file or assembly 'System.Net.Http' or one of its dependencies." (No se pudo cargar el archivo o ensamblado System.Net.Http o una de sus dependencias) cuando la aplicación se ejecuta en un sistema con .NET 4.0 instalado. Para corregir este problema, quite el siguiente redireccionamiento de enlace de web.config:

    XML
    <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>
    

    El elemento de enlace de ensamblado en el archivo web.config modificado debe aparecer de la siguiente manera:

    XML
    <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>
    
  • La plantilla de elemento "Agregar controlador" en proyectos de Visual Basic genera un espacio de nombres incorrecto cuando se invocadesde dentro de un área. Al agregar un controlador a un área de un proyecto de ASP.NET MVC que usa Visual Basic, la plantilla de elemento inserta el espacio de nombres incorrecto en el controlador. El resultado es un error de "archivo no encontrado" al navegar a cualquier acción del controlador.

    El espacio de nombres generado omite todo después del espacio de nombres raíz. Por ejemplo, el espacio de nombres generado es RootNamespace , pero debe ser RootNamespace.Areas.AreaName.Controllers .

  • Cambios importantes en el motor de vistas de Razor. Como parte de una reescritura del analizador de Razor, se quitaron los siguientes tipos de System.Web.Mvc.Razor:

    • ModelSpan
    • MvcVBRazorCodeGenerator
    • MvcCSharpRazorCodeGenerator
    • MvcVBRazorCodeParser

    También se quitaron los métodos siguientes:

    • MvcCSharpRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
    • MvcWebPageRazorHost.DecorateCodeGenerator(System.Web.Razor.Generator.RazorCodeGenerator)
    • MvcVBRazorCodeParser.ParseInheritsStatement(System.Web.Razor.Parser.CodeBlockInfo)
  • Cuando WebMatrix.WebData.dll se incluye en el directorio /bin de una aplicación de ASP.NET MVC 4, toma la dirección URL para la autenticación de formularios. Al agregar el ensamblado de WebMatrix.WebData.dll a la aplicación (por ejemplo, al seleccionar "ASP.NET Web Pages con sintaxis Razor" en el cuadro de diálogo Agregar dependencias implementables) se invalidará la redirección de inicio de sesión de autenticación a /account/logon en lugar de /account/login según lo previsto por el controlador de cuenta predeterminado de ASP.NET MVC. Para evitarlo y usar la dirección URL especificada ya en la sección de autenticación de web.config, puede agregar un appSetting denominado PreserveLoginUrl y establecerlo en true:

    XML
    <appSettings>
        <add key="PreserveLoginUrl" value="true"/>
    </appSettings>
    
  • El administrador de paquetes NuGet produce error al intentar instalar ASP.NET MVC 4 para instalaciones en paralelo de Visual Studio 2010 y Visual Web Developer 2010. Para ejecutar Visual Studio 2010 y Visual Web Developer 2010 en paralelo con ASP.NET MVC 4, debe instalar ASP.NET MVC 4 una vez instaladas ambas versiones de Visual Studio.

  • Si ya se han desinstalado los requisitos previos, se produce un error al desinstalar ASP.NET MVC 4. Para desinstalar completamente ASP.NET MVC 4, debe desinstalar ASP.NET MVC 4 antes de hacerlo con Visual Studio.

  • Al ejecutar un proyecto predeterminado de la API Web se muestran instrucciones que dirigen incorrectamente al usuario para agregar rutas mediante el método RegisterApis, que no existe. Las rutas deben agregarse en el método RegisterRoutes mediante la tabla de rutas de ASP.NET.

  • La instalación de ASP.NET MVC 4 Beta interrumpe las aplicaciones de ASP.NET MVC 3 RTM. Las aplicaciones de ASP.NET MVC 3 creadas con la versión RTM (no con la versión de actualización de herramientas de ASP.NET MVC 3) requieren los siguientes cambios para poder trabajar en paralelo con ASP.NET MVC 4 Beta. La compilación del proyecto sin estas actualizaciones produce errores de compilación.

    Actualizaciones necesarias

    1. En el archivo raíz Web.config, agregue una nueva entrada <appSettings> con la clave webPages:Version y el valor 1.0.0.0.

      XML
      <appSettings>
          <add key="webpages:Version" value="1.0.0.0"/>
          <add key="ClientValidationEnabled" value="true"/>
          <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
      </appSettings>
      
    2. En el Explorador de soluciones, haga clic con el botón derecho en el nombre del proyecto y luego seleccione Descargar proyecto. Después, vuelva a hacer clic con el botón derecho en el nombre y seleccione Editar ProjectName.csproj.

    3. Busque las siguientes referencias de ensamblado:

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

      Reemplácelas por lo siguiente:

      XML
      <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. Guarde los cambios, cierre el archivo del proyecto (.csproj) que estaba editando, haga clic con el botón derecho en el proyecto y después seleccione Volver a cargar.