Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este documento se describe la versión de ASP.NET MVC 4 .
Nuevas características de ASP.NET MVC 4
- ASP.NET Web API
- Mejoras en las plantillas de proyecto predeterminadas
- Plantilla de proyecto móvil
- Modos de visualización
- jQuery Mobile, el cambiador de vista y la sobrescritura del navegador
- Compatibilidad de tareas con controladores asincrónicos
- Azure SDK
- Migraciones de base de datos
- Plantilla de proyecto vacía
- Agregar controlador a cualquier carpeta del proyecto
- Agrupación y minificación
- Habilitación de inicios de sesión desde Facebook y otros sitios mediante OAuth y OpenID
Actualización de un proyecto de ASP.NET MVC 3 a ASP.NET MVC 4
Notas de instalación
ASP.NET MVC 4 para Visual Studio 2010 se puede instalar desde la página principal de ASP.NET MVC 4 mediante el Instalador de plataforma web.
Se recomienda desinstalar las versiones preliminares instaladas anteriormente de ASP.NET MVC 4 antes de instalar ASP.NET MVC 4. Puede actualizar el ASP.NET MVC 4 Beta y Release Candidate a ASP.NET MVC 4 sin desinstalar.
Esta versión no es compatible con ninguna versión preliminar de .NET Framework 4.5. Debe actualizar por separado las versiones preliminares instaladas de .NET Framework 4.5 a la versión final antes de instalar ASP.NET MVC 4.
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
Los tutoriales y otra información sobre ASP.NET MVC están disponibles en la página MVC 4 del sitio web de ASP.NET (https://www.asp.net/mvc/mvc4).
Apoyo
ASP.NET MVC 4 es totalmente compatible. Si tiene alguna pregunta sobre cómo trabajar con esta versión, también puede publicarlas en el foro de ASP.NET MVC (https://forums.asp.net/1146.aspx), donde los miembros de la comunidad de ASP.NET suelen ser capaces de proporcionar soporte informal.
Requisitos de software
Los componentes de ASP.NET MVC 4 para Visual Studio requieren PowerShell 2.0 y Visual Studio 2010 con Service Pack 1 o Visual Web Developer Express 2010 con Service Pack 1.
Nuevas características de ASP.NET MVC 4
En esta sección se describen las características que se han introducido en la versión ASP.NET MVC 4.
ASP.NET Web API
ASP.NET MVC 4 incluye ASP.NET API web, 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 también es una plataforma ideal para crear servicios RESTful.
ASP.NET API web incluye compatibilidad con las siguientes características:
- Modelo de programación HTTP moderno: Acceda y manipule directamente 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: ASP.NET API web admite el conjunto completo de funcionalidades de ruta de ASP.NET Enrutamiento, incluidos los parámetros de ruta y las restricciones. Además, use convenciones sencillas para asignar acciones a métodos HTTP.
- Negociación de contenido: El cliente y el servidor pueden trabajar conjuntamente para determinar el formato adecuado para los datos que se devuelven desde una API web. ASP.NET Web API proporciona compatibilidad predeterminada con formatos codificados con url de formulario, JSON y XML, y puede ampliar esta compatibilidad agregando sus propios formateadores 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 convertir esos elementos de mensaje en objetos .NET que las acciones de la API web pueden usar. La validación también se realiza en parámetros de acción basados en anotaciones de datos.
- Filtros: ASP.NET API web admite 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: Use el atributo de filtro [Queryable] en una acción que devuelve IQueryable para habilitar la compatibilidad con la consulta de la API web a través de las convenciones de consulta de OData.
- Capacidad de prueba mejorada: En lugar de establecer detalles HTTP en objetos de contexto estáticos, las acciones de API web funcionan con instancias de HttpRequestMessage y HttpResponseMessage. Cree un proyecto de prueba unitaria junto con el proyecto de API web para empezar a escribir rápidamente pruebas unitarias para la funcionalidad de la API web.
- Configuración basada en código: ASP.NET configuración de la API web se realiza únicamente a través del código, dejando limpios los archivos de configuración. Use el patrón de localizador de servicios proporcionado para configurar puntos de extensibilidad.
- Compatibilidad mejorada con contenedores de inversión de control (IoC): ASP.NET WEB API proporciona una gran compatibilidad con los contenedores de IoC a través de una abstracción mejorada del solucionador de dependencias.
- Alojamiento propio: Las API Web se pueden hospedar en su propio proceso además de en IIS mientras siguen usando toda la capacidad de las rutas y otras características de la API Web.
- Cree páginas de ayuda y pruebas personalizadas: Ahora puede crear fácilmente páginas de ayuda y pruebas personalizadas para las API web mediante el nuevo servicio IApiExplorer para obtener una descripción completa del entorno de ejecución de las API web.
- Supervisión y diagnóstico: ASP.NET WEB API ahora proporciona una infraestructura de seguimiento ligera que facilita la integración con soluciones de registro existentes, como System.Diagnostics, ETW y marcos de registro de terceros. Puede habilitar el seguimiento proporcionando una implementación de ITraceWriter y agregándola a la configuración de la API web.
- Generación de vínculos: Use el ASP.NET UrlHelper de api web para generar vínculos a recursos relacionados en la misma aplicación.
- Plantilla de proyecto de API web: Seleccione el nuevo proyecto de API web desde el asistente de Nuevo Proyecto de MVC 4 para ponerse en marcha rápidamente con ASP.NET Web API.
- Scaffolding: Use el cuadro de diálogo Agregar controlador para aplicar scaffolding rápidamente a un controlador de API web basado en un tipo de modelo basado en Entity Framework.
Para obtener más información sobre ASP.NET API web, visite https://www.asp.net/web-api.
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 web más moderno:
Además de las mejoras estéticas, hay una funcionalidad mejorada en la nueva plantilla. La plantilla emplea una técnica denominada representación adaptable para tener un aspecto correcto tanto en exploradores de escritorio como en exploradores móviles sin ninguna personalización.
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.
Plantilla de proyecto móvil
Si va a iniciar un nuevo proyecto y desea crear un sitio específicamente para exploradores móviles y tabletas, puede usar la nueva plantilla de proyecto Aplicación móvil. Esto se basa en jQuery Mobile, una biblioteca de código abierto para crear una interfaz de usuario optimizada para entrada táctil:
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 está diseñada con jQuery Mobile para que se vea bien y funcione correctamente en dispositivos móviles táctiles. Para obtener más información sobre cómo estructurar y aplicar estilo a la interfaz de usuario móvil, consulte el sitio web del proyecto jQuery Mobile.
Si ya tiene un sitio orientado a escritorio al que desea agregar vistas optimizadas para dispositivos móviles, o si desea crear un único sitio que sirva vistas de estilo diferente a exploradores móviles y de escritorio, puede usar la nueva característica Modos de visualización. (Consulte la sección siguiente).
Modos de visualización
La nueva característica Modos de visualización permite a una aplicación seleccionar vistas en función del explorador que realiza la solicitud. Por ejemplo, si un explorador de escritorio solicita la página Principal, la aplicación podría usar la plantilla Views\Home\Index.cshtml. Si un explorador móvil solicita la página Principal, la aplicación podría devolver la plantilla Views\Home\Index.mobile.cshtml.
Los diseños y las 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 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 durante las solicitudes de exploradores móviles y _MyPartial.cshtml durante otras solicitudes.
Si desea crear vistas, diseños o vistas parciales más específicas para otros dispositivos, puede registrar una nueva instancia DefaultDisplayMode para especificar qué nombre buscar 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 de Apple iPhone realiza una solicitud:
DisplayModeProvider.Instance.Modes.Insert(0, new
DefaultDisplayMode("iPhone")
{
ContextCondition = (context => context.GetOverriddenUserAgent().IndexOf
("iPhone", StringComparison.OrdinalIgnoreCase) >= 0)
});
Una vez que se ejecuta este código, cuando un explorador de Apple iPhone realiza una solicitud, la aplicación usará el diseño Views\Shared\_Layout.iPhone.cshtml (si existe). Para obtener más información sobre el modo de visualización, consulte ASP.NET características móviles de MVC 4. Las aplicaciones que usan DisplayModeProvider deben instalar el paquete NuGet Fixed DisplayModes. La actualización de ASP.NET de otoño de 2012 incluye el paquete NuGet Fixed DisplayModes en los nuevos proyectos de plantillas. Consulte ASP.NET error de almacenamiento en caché móvil de MVC 4 corregido para obtener más información sobre la corrección.
Funciones móviles de jQuery Mobile y características móviles
Para obtener información sobre cómo compilar aplicaciones móviles con ASP.NET MVC 4 mediante jQuery Mobile, consulte el tutorial ASP.NET características móviles de MVC 4.
Soporte de tareas para controladores asíncronos
Ahora puede escribir métodos de acción asincrónicos como métodos únicos que devuelven un objeto de tipo Task o Task<ActionResult>.
Para obtener más información, vea Uso de métodos asincrónicos en ASP.NET MVC 4.
SDK de Azure
ASP.NET MVC 4 admite las versiones 1.6 y posteriores del SDK de Windows Azure.
Migraciones de base de datos
ASP.NET proyectos de MVC 4 ahora incluyen Entity Framework 5. Una de las excelentes características de Entity Framework 5 es la compatibilidad con las migraciones de bases de datos. Esta característica le permite evolucionar fácilmente el esquema de la base de datos mediante una migración centrada en el código al tiempo que conserva los datos de la base de datos. Para obtener más información sobre las migraciones de bases de datos, vea Adición de un nuevo campo al modelo de película y tabla en el tutorial Introducción a ASP.NET MVC 4.
Plantilla de proyecto vacía
La plantilla de proyecto vacío de MVC ahora está realmente vacía, permitiéndole comenzar desde un punto completamente limpio. Se ha cambiado el nombre de la versión anterior de la plantilla de proyecto vacío a Básico.
Agregar controlador a cualquier carpeta del proyecto
Ahora puede hacer clic con el botón derecho y seleccionar Agregar controlador en cualquier carpeta del proyecto de MVC. Esto le proporciona más flexibilidad para organizar los controladores sin embargo que desee, incluido mantener los controladores de MVC y API web en carpetas independientes.
Unión y minificación
El marco de agrupación y minificación le permite reducir el número de solicitudes HTTP que una página web necesita realizar mediante la combinación de archivos individuales en un único archivo agrupado para scripts y CSS. A continuación, puede reducir el tamaño general de esas solicitudes mediante la minificación del contenido de la agrupación. La minificación puede incluir actividades como eliminar espacios en blanco, hasta acortar los nombres de variables, e incluso contraer selectores CSS en función de su semántica. Los paquetes se declaran y configuran en código y se hace referencia fácilmente a estos en las vistas a través de métodos auxiliares que pueden generar un único vínculo al paquete o, durante la depuración, varios vínculos al contenido individual del paquete. Para obtener más información, ver Agrupación y minificación.
Habilitación de inicios de sesión desde Facebook y otros sitios mediante OAuth y OpenID
Las plantillas predeterminadas de ASP.NET plantilla de proyecto de Internet de MVC 4 ahora incluyen compatibilidad con el inicio de sesión de OAuth y OpenID mediante la biblioteca DotNetOpenAuth. Para obtener información sobre cómo configurar un proveedor de OAuth o OpenID, consulte Compatibilidad con OAuth/OpenID para WebForms, MVC y WebPages y la documentación de características de OAuth y OpenID en ASP.NET Páginas web.
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 flexibilidad al 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 al nuevo proyecto y, a continuación, actualizar las referencias de ensamblado en el nuevo proyecto para que coincidan con cualquier plantilla que no sea MVC incluida comosembiles que esté usando. Si ha realizado cambios en el archivo Web.config en el proyecto MVC 3, también debe combinar esos cambios en el archivo Web.config en el proyecto MVC 4.
Para actualizar manualmente una aplicación de ASP.NET MVC 3 existente a la versión 4, haga lo siguiente:
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 todas las instancias del texto siguiente (nota: System.Web.WebPages, Version=1.0.0.0 no se encuentra en los proyectos creados con 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.0con el siguiente texto correspondiente:
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.0En 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":
<appSettings> <add key="webpages:Version" value="2.0.0.0" /> <add key="PreserveLoginUrl" value="true" /> </appSettings>En el Explorador de soluciones, haga clic con el botón derecho en Las referencias y seleccione Administrar paquetes NuGet. En el panel izquierdo, seleccione Online\NuGet official package source (Origen del paquete oficial online\NuGet) y, a continuación, actualice lo siguiente:
- ASP.NET MVC 4
- (Opcional) jQuery, jQuery Validation y jQuery UI
- (Opcional) Entity Framework
- (Opcional) Modernizr
En el Explorador de soluciones, haga clic con el botón derecho en el nombre del proyecto y seleccione Descargar proyecto. A continuación, haga clic con el botón derecho en el nombre de nuevo y seleccione Editar NombreDeProyecto.csproj.
Busque el elemento ProjectTypeGuids y reemplace {E53F8FEA-EAE0-44A6-8774-FFD645390401} por {E3E379DF-F4C6-4180-9B81-6769533ABE47}.
Guarde los cambios, cierre el archivo del proyecto (.csproj) que estaba editando, haga clic con el botón derecho en el proyecto y, a continuación, seleccione Volver a cargar proyecto.
Si el proyecto hace referencia a bibliotecas de terceros que se compilan con versiones anteriores de ASP.NET MVC, abra el archivo raíz Web.config y agregue los tres elementos bindingRedirect siguientes en la sección de configuración :
<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>
Cambios en ASP.NET MVC 4 Release Candidate
Las notas de la versión de ASP.NET MVC 4 Release Candidate se pueden encontrar aquí:
Los principales cambios de ASP.NET MVC 4 Release Candidate en esta versión se resumen a continuación:
- Configuración por controlador: Los controladores de API Web de ASP.NET pueden ser atribuidos con un atributo personalizado que implementa IControllerConfiguration para configurar sus propios formateadores, selectores de acciones y enlazadores de parámetros. Se ha quitado HttpControllerConfigurationAttribute .
- Por controlador de mensajes de ruta: Ahora puede especificar el controlador de mensajes final en la cadena de solicitudes para una ruta determinada. Esto permite el soporte para marcos complementarios para usar el enrutamiento y despachar a sus propios puntos de conexión (que no son IHttpController).
- Notificaciones de progreso:ProgressMessageHandler genera notificaciones de progreso tanto para las entidades de solicitud que se cargan como para las entidades de respuesta que se descargan. Con este controlador, es posible mantener un seguimiento del progreso de carga de un cuerpo de solicitud o de descarga de un cuerpo de respuesta.
- Insertar contenido: La clase PushStreamContent permite escenarios en los que un productor de datos quiere escribir directamente en la solicitud o respuesta (ya sea de forma sincrónica o asincrónica) mediante una secuencia. Cuando PushStreamContent está listo para aceptar datos, llama a un delegado de acción con el flujo de salida. Después, el desarrollador puede escribir en la secuencia todo el tiempo que sea necesario y cerrar la secuencia cuando termine de escribir. PushStreamContent detecta el cierre de la secuencia y completa la tarea asincrónica subyacente para escribir el contenido.
- Creación de respuestas de error: Use el tipo HttpError para representar de forma coherente información de error de , como errores de validación y excepciones, a la vez que respeta includeErrorDetailPolicy. Use los nuevos métodos de extensión CreateErrorResponse para crear fácilmente respuestas de error con HttpError como contenido. El contenido httpError está totalmente negociado.
- MediaRangeMapping se ha eliminado: Los rangos de tipos de medios ahora se controlan mediante el negociador de contenido predeterminado.
- El enlace de parámetros predeterminado para parámetros de tipo simple ahora es [FromUri]: En versiones anteriores de ASP.NET Web API, el enlace de parámetros predeterminado para los parámetros de tipo simple utilizaba enlace de modelo. El enlace de parámetros predeterminado para parámetros de tipo simple ahora es [FromUri].
- La selección de acciones respeta los parámetros necesarios: La selección de acciones en ASP.NET API web ahora solo seleccionará una acción si se proporcionan todos los parámetros necesarios que proceden del URI. Un parámetro se puede especificar como opcional proporcionando un valor predeterminado para el argumento en la firma del método de acción.
- Personalización de enlaces de parámetros HTTP: Use ParameterBindingAttribute para personalizar el enlace de parámetros para un parámetro de acción específico o use ParameterBindingRules en HttpConfiguration para personalizar los enlaces de parámetros de forma más amplia.
- Mejoras de MediaTypeFormatter: Los formateadores ahora tienen acceso a la instancia completa de HttpContent .
- Selección de política de almacenamiento en búfer del anfitrión: Implemente y configure el servicio IHostBufferPolicySelector en ASP.NET Web API para permitir a los anfitriones determinar la política sobre cuándo se debe utilizar el almacenamiento en búfer.
- Obtenga acceso a los certificados de cliente de forma independiente del host: Use el método de extensión GetClientCertificate para obtener el certificado de cliente proporcionado del mensaje de solicitud.
- Extensibilidad de la negociación de contenido: Personalice la negociación de contenido derivando de DefaultContentNegotiator y reemplazando cualquier aspecto de la negociación de contenido que desee.
- Compatibilidad con la devolución de respuestas 406 no aceptables: Ahora puede devolver 406 Respuestas no aceptables en ASP.NET API web cuando no se encuentra un formateador adecuado mediante la creación de un defaultContentNegotiator con el parámetro excludeMatchOnTypeOnly establecido en true.
- Lee los datos del formulario como NameValueCollection o JToken: Puede leer datos de formulario en la cadena de consulta URI o en el cuerpo de la solicitud como NameValueCollection mediante los métodos de extensión ParseQueryString y ReadAsFormDataAsync respectivamente. Del mismo modo, puede leer datos de formulario en la cadena de consulta URI o en el cuerpo de la solicitud como JToken utilizando los métodos de extensión TryReadQueryAsJson y ReadAsAsync<T> respectivamente.
- Mejoras de varias partes: Ahora es posible escribir un MultipartStreamProvider que esté completamente adaptado al tipo de datos de varias partes MIME que puede leer y presentar el resultado de la manera óptima para el usuario. También puede agregar un paso de procesamiento posterior en MultipartStreamProvider, que permite a la implementación realizar cualquier procesamiento posterior deseado en los cuerpos de partes múltiples MIME. Por ejemplo, la implementación MultipartFormDataStreamProvider lee los elementos de datos del formulario HTML y los agrega a una colección de nombre-valor para que se puedan obtener fácilmente desde el llamador.
- Mejoras de generación de vínculos:UrlHelper ya no depende de HttpControllerContext. Ahora puede acceder a UrlHelper desde cualquier contexto en el que httpRequestMessage esté disponible.
- Cambio del orden de ejecución del controlador de mensajes: Los controladores de mensajes ahora se ejecutan en el orden en que están configurados en lugar de en orden inverso.
- Asistente para conectar controladores de mensajes: El nuevo HttpClientFactory que puede conectar DelegatingHandlers y crear un HttpClient con la canalización deseada lista para usarse. También proporciona funcionalidad para conectar con controladores internos alternativos (el valor predeterminado es HttpClientHandler), así como hacer el cableado al usar HttpMessageInvoker u otro DelegatingHandler en lugar de HttpClient como el invocador superior.
- Compatibilidad con redes CDN en ASP.NET Optimización web: ASP.NET Optimización web ahora proporciona compatibilidad con rutas alternativas de red CDN, lo que le permite especificar para cada agrupación una dirección URL adicional que apunte a ese mismo recurso en una red de entrega de contenido. La compatibilidad con CDN permite acercar geográficamente el script y los conjuntos de estilos a los consumidores finales de las aplicaciones web. Las aplicaciones de producción deben implementar una alternativa cuando la CDN no está disponible. Pruebe el respaldo.
- ASP.NET las rutas y la configuración de la API web se mueven al método estático WebApiConfig.Register que se puede volver a usar en el código de prueba. Anteriormente, las rutas de la API Web de ASP.NET se agregaban en RouteConfig.RegisterRoutes junto con las rutas estándar de MVC. Las rutas y configuraciones predeterminadas de ASP.NET Web API ahora se gestionan en un método independiente WebApiConfig.Register para facilitar las pruebas.
Problemas conocidos y cambios importantes
La versión RC y RTM de ASP.NET MVC 4 devolvió incorrectamente las vistas de escritorio almacenadas en caché cuando se deben devolver vistas móviles.
- Consulte Corrección de error de almacenamiento en caché móvil de ASP.NET MVC 4 para obtener más información sobre la corrección. La corrección se puede instalar desde el paquete Fixed DisplayModes de NuGet.
Cambios importantes en el motor de vista de Razor. Los siguientes tipos se quitaron 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 ASP.NET aplicaciones MVC 4, toma la dirección URL para la autenticación de formularios. Al agregar el ensamblado WebMatrix.WebData.dll a la aplicación (por ejemplo, al seleccionar "ASP.NET páginas web con sintaxis de Razor" al usar el cuadro de diálogo Agregar dependencias que se pueden implementar) reemplazará 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 ASP.NET controlador de cuentas MVC predeterminado. Para evitar este comportamiento 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:
<appSettings> <add key="PreserveLoginUrl" value="true"/> </appSettings>El administrador de paquetes NuGet no se puede instalar 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 limpiamente ASP.NET MVC 4, debe desinstalar ASP.NET MVC 4 antes de desinstalar Visual Studio.
La instalación de ASP.NET MVC 4 interrumpe ASP.NET aplicaciones de MVC 3 RTM. ASP.NET aplicaciones MVC 3 creadas con la versión RTM (no con la versión de actualización de herramientas de MVC 3 de ASP.NET ) requieren los siguientes cambios para poder trabajar en paralelo con ASP.NET MVC 4. La compilación del proyecto sin realizar estas actualizaciones produce errores de compilación.
Actualizaciones necesarias
En el archivo raíz Web.config, agregue una nueva <entrada appSettings> con la clave webPages:Version y el valor 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>En el Explorador de soluciones, haga clic con el botón derecho en el nombre del proyecto y seleccione Descargar proyecto. A continuación, haga clic con el botón derecho en el nombre de nuevo y seleccione Editar NombreDeProyecto.csproj.
Busque las siguientes referencias de ensamblaje:
<Reference Include="System.Web.WebPages"/> <Reference Include="System.Web.Helpers" />Reemplácelas por lo siguiente:
<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" />Guarde los cambios, cierre el archivo del proyecto (.csproj) que estaba editando y, a continuación, haga clic con el botón derecho en el proyecto y seleccione Volver a cargar.
El cambio de un proyecto de ASP.NET MVC 4 a 4.0 de destino de la versión 4.5 no actualiza la referencia del ensamblado EntityFramework: Si cambia un proyecto de ASP.NET MVC 4 a 4.0 como destino después de establecer como destino 4.5, la referencia al ensamblado EntityFramework seguirá apuntando a la versión 4.5. Para corregir este problema, desinstale y vuelva a instalar el paquete NuGet EntityFramework.
403 Forbidden al ejecutar una aplicación ASP.NET MVC 4 en Azure después de cambiar el destino de 4.5 a 4.0: Si cambia un proyecto de ASP.NET MVC 4 para que apunte a 4.0 desde 4.5 y luego lo despliega en Azure, es posible que experimente un error 403 Forbidden en tiempo de ejecución. Para solucionar este problema, agregue lo siguiente a la web.config:
<modules runAllManagedModulesForAllRequests="true" />Visual Studio 2012 se bloquea al escribir "" en un literal de cadena en un archivo de Razor. Para solucionar el problema, escriba primero la comilla de cierre del literal de cadena.
Al navegar a "Account/Manage" en la plantilla de Internet se produce un error de tiempo de ejecución en los idiomas CHS, TRK y CHT. Para corregir el problema, modifique la página para separar @User.Identity.Name colocándolo como el único contenido dentro de la etiqueta <strong>.
Los proveedores de Google y LinkedIn no se admiten en sitios web de Azure. Use proveedores de autenticación alternativos al implementar en sitios web de Azure.
Al usar UriPathExtensionMapping con IIS 8 Express/IIS, recibirá errores 404 No encontrados al intentar usar la extensión. El controlador de archivos estático interferirá con las solicitudes a las API web que usan UriPathExtensionMappings. Establezca runAllManagedModulesForAllRequests=true en web.config para solucionar el problema.
Ya no se llama al método Controller.Execute. Todos los controladores MVC ahora siempre se ejecutan de forma asincrónica.