Novedades de ASP.NET Core 2.0

En este artículo se resaltan los cambios más importantes de ASP.NET Core 2.0, con vínculos a la documentación pertinente.

Razor Pages

Razor Pages es una nueva característica de ASP.NET Core MVC que facilita la codificación de escenarios centrados en páginas y hace que sea más productiva.

Para más información, vea la introducción y el tutorial:

Metapaquete de ASP.NET Core

Hay un nuevo metapaquete de ASP.NET Core que incluye todos los paquetes creados y que son compatibles con los equipos de ASP.NET Core y Entity Framework Core, junto con sus dependencias internas y de terceros. Ya no tiene que elegir características concretas de ASP.NET Core por paquete. Todas las características se incluyen en el paquete Microsoft.AspNetCore.All. Las plantillas predeterminadas usan este paquete.

Para más información, vea Microsoft.AspNetCore.All metapackage for ASP.NET Core 2.0 (Metapaquete Microsoft.AspNetCore.All para ASP.NET Core 2.0).

Almacén en tiempo de ejecución

Las aplicaciones que usan el metapaquete Microsoft.AspNetCore.All pueden aprovechar automáticamente el nuevo almacén en tiempo de ejecución de .NET Core. El almacén contiene todos los recursos en tiempo de ejecución necesarios para ejecutar aplicaciones de ASP.NET Core 2.0. Al usar el metapaquete Microsoft.AspNetCore.All, no se implementa ningún recurso de los paquetes NuGet de ASP.NET Core referenciados con la aplicación, porque ya residen en el sistema de destino. Los recursos del almacén en tiempo de ejecución también se precompilan para mejorar el tiempo de inicio de la aplicación.

Para más información, vea Runtime store (Almacén en tiempo de ejecución).

.NET Standard 2.0

Los paquetes de ASP.NET Core 2.0 tienen como destino .NET Standard 2.0. Se puede hacer referencia a los paquetes mediante otras bibliotecas de .NET Standard 2.0 y se pueden ejecutar en implementaciones compatibles con .NET Standard 2.0 de. NET, como .NET Core 2.0 y .NET Framework 4.6.1.

El metapaquete Microsoft.AspNetCore.All tiene como destino únicamente .NET Core 2.0, ya que está pensado para usarse con el almacén en tiempo de ejecución de .NET Core 2.0.

Actualización de la configuración

En ASP.NET Core 2.0 se agrega de forma predeterminada una instancia IConfiguration al contenedor de servicios. La instancia IConfiguration del contenedor de servicios facilita que las aplicaciones recuperen los valores de configuración del contenedor.

Para información sobre el estado de la documentación planeada, vea este problema de GitHub.

Actualización del registro

En ASP.NET Core 2.0, el registro se incorpora de forma predeterminada en el sistema de inserción de dependencias (DI). Debe agregar proveedores y configurar el filtrado en el archivo Program.cs, y no en el archivo Startup.cs. El ILoggerFactory predeterminado admite el filtrado de una forma que le permite usar un enfoque flexible para el filtrado de varios proveedores y el filtrado de proveedor específico.

Para más información, vea Introduction to Logging (Introducción al registro).

Actualización de la autenticación

Hay un nuevo modelo de autenticación que facilita la configuración de la autenticación de una aplicación mediante la inserción de dependencias.

Hay plantillas nuevas disponibles para configurar la autenticación de aplicaciones web y API web con Azure AD B2C.

Para información sobre el estado de la documentación planeada, vea este problema de GitHub.

Actualización de Identity

Se ha facilitado la compilación de API web seguras mediante Identity de ASP.NET Core 2.0. Puede adquirir tokens de acceso para obtener acceso a las API web mediante la Biblioteca de autenticación de Microsoft (MSAL).

Para más información sobre los cambios de autenticación en la versión 2.0, vea los siguientes recursos:

Plantillas de SPA

Hay disponibles plantillas de proyectos de Single-Page Application (SPA) para Angular, Aurelia, Knockout.js, React.js y React.js con Redux. La plantilla de Angular se ha actualizado a Angular 4. Las plantillas de Angular y de React están disponibles de forma predeterminada. Para obtener información sobre cómo obtener las otras plantillas, vea Creating a new SPA project (Crear un proyecto de SPA). Para obtener información sobre cómo crear una SPA en ASP.NET Core, consulte Las características descritas en este artículo están obsoletas a partir de ASP.NET Core 3.0.

Mejoras de Kestrel

El servidor web de Kestrel tiene nuevas características que lo hacen más adecuado como servidor con conexión a Internet. Se ha agregado una serie de opciones de configuración de restricción del servidor en la nueva propiedad Limits de la clase KestrelServerOptions. Agregue límites para:

  • Las conexiones máximas de cliente
  • El tamaño máximo del cuerpo de solicitud
  • La velocidad mínima de los datos del cuerpo de solicitud.

Para más información, vea Implementación del servidor web de Kestrel en ASP.NET Core.

WebListener pasa a denominarse HTTP.sys

Los paquetes Microsoft.AspNetCore.Server.WebListener y Microsoft.Net.Http.Server se han combinado en un nuevo paquete, Microsoft.AspNetCore.Server.HttpSys. Los espacios de nombres se han actualizado para que coincidan.

Para más información, vea HTTP.sys web server implementation in ASP.NET Core (Implementaciones del servidor web de HTTP.sys en ASP.NET Core).

Compatibilidad mejorada de los encabezados HTTP

Al usar MVC para transmitir un FileStreamResult o un FileContentResult, ahora tiene la opción de establecer una ETag o una fecha LastModified en el contenido que se transmite. Puede establecer estos valores en el contenido devuelto con un código similar al siguiente:

var data = Encoding.UTF8.GetBytes("This is a sample text from a binary array");
var entityTag = new EntityTagHeaderValue("\"MyCalculatedEtagValue\"");
return File(data, "text/plain", "downloadName.txt", lastModified: DateTime.UtcNow.AddSeconds(-5), entityTag: entityTag);

El archivo devuelto a los visitantes incluye los encabezados HTTP adecuados para los valores ETag y LastModified.

Si un visitante de la aplicación solicita el contenido con un encabezado de solicitud de intervalo, ASP.NET Core reconoce la solicitud y controla ese encabezado. Si el contenido solicitado se puede entregar de forma parcial, ASP.NET Core lo omite debidamente y solo devuelve el conjunto de bytes solicitado. No es necesario que escriba ningún controlador especial en los métodos para adaptar o controlar esta característica, ya que se controla automáticamente.

Inicio del hospedaje y Application Insights

Ahora, los entornos de hospedaje pueden insertar dependencias de paquetes adicionales y ejecutar código durante el inicio de la aplicación sin que la aplicación tenga que tomar una dependencia explícitamente o llamar a ningún método. Esta característica se puede usar para habilitar ciertos entornos y activar características únicas de ese entorno sin que la aplicación tenga que saberlo de antemano.

En ASP.NET Core 2.0, esta característica se usa para habilitar automáticamente los diagnósticos de Application Insights al efectuar una depuración en Visual Studio y (tras la participación) al ejecutarse en Azure App Services. Como resultado, las plantillas del proyecto ya no agregan de forma predeterminada el código ni los paquetes de Application Insights.

Para información sobre el estado de la documentación planeada, vea este problema de GitHub.

Uso automático de tokens antifalsificación

ASP.NET Core siempre ha ayudado a codificar en HTML el contenido de forma predeterminada, pero con la nueva versión estamos dando un paso más para impedir ataques de falsificación de solicitud entre sitios (CSRF). A partir de ahora, ASP.NET Core emitirá tokens antifalsificación de forma predeterminada y los validará en las páginas y acciones POST de formulario sin tener que aplicar ninguna configuración adicional.

Para obtener más información, vea Prevención de ataques de falsificación de solicitud entre sitios (XSRF/CSRF) en ASP.NET Core.

Precompilación automática

La precompilación de vistas de Razor se habilita de forma predeterminada durante la publicación, lo que reduce el tamaño de salida de la publicación y el tiempo de inicio de la aplicación.

Para obtener más información, vea Precompilación y compilación de vistas de Razor en ASP.NET Core.

Compatibilidad de Razor con C# 7.1

El motor de vistas de Razor se ha actualizado para poder funcionar con el nuevo compilador Roslyn. Incluye compatibilidad con características de C# 7.1, como las expresiones predeterminadas, los nombres de tupla inferidos y la coincidencia de patrones con genéricos. Para usar C# 7.1 en el proyecto, agregue la siguiente propiedad al archivo del proyecto y, luego, vuelva a cargar la solución:

<LangVersion>latest</LangVersion>

Para información sobre el estado de las características de C# 7.1, vea el repositorio de GitHub para Roslyn.

Otras actualizaciones de documentación para la versión 2.0

Guía de migración

Para obtener instrucciones sobre cómo migrar aplicaciones de ASP.NET Core 1.x a ASP.NET Core 2.0, vea los siguientes recursos:

Información adicional

Para ver la lista completa de cambios, consulte las notas de la versión de ASP.NET Core 2.0.

Para estar en contacto con el progreso y los planes del equipo de desarrollo de ASP.NET Core, sintonice ASP.NET Community Standup.