Evento
Campionato do Mundo de Power BI DataViz
Feb 14, 4 PM - Mar 31, 4 PM
Con 4 posibilidades de entrar, poderías gañar un paquete de conferencias e facelo ao Live Grand Finale en Las Vegas
Máis informaciónEste explorador xa non é compatible.
Actualice a Microsoft Edge para dispoñer das funcionalidades máis recentes, as actualizacións de seguranza e a asistencia técnica.
Por Scott Addie
En este artículo se explica cómo actualizar un proyecto de ASP.NET Core 2.1 existente a ASP.NET Core 2.2.
Aviso
Si usa Visual Studio 2017, consulte dotnet/sdk problema #3124 para información sobre las versiones del SDK de .NET Core que no funcionan con Visual Studio.
Los proyectos para .NET Core deben usar el TFM de una versión mayor o igual que .NET Core 2.2. En el archivo del proyecto, actualice el texto interno del nodo <TargetFramework>
con netcoreapp2.2
:
<TargetFramework>netcoreapp2.2</TargetFramework>
Los proyectos para .NET Framework pueden continuar usando el TFM de una versión mayor o igual que .NET Framework 4.6.1:
<TargetFramework>net461</TargetFramework>
Para adoptar el modelo de hospedaje en proceso para IIS, agregue la propiedad <AspNetCoreHostingModel>
con un valor de InProcess
a <PropertyGroup>
en el archivo de proyecto:
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
No se admite el modelo de hospedaje en proceso para aplicaciones de ASP.NET Core que tienen como destino .NET Framework.
Para obtener más información vea Módulo de ASP.NET Core (ANCM) para IIS.
Para los proyectos que usan un archivo web.config personalizado en la raíz del proyecto para generar su archivo web.config publicado:
<handlers>
que agrega el módulo ASP.NET Core (name="aspNetCore"
), cambie el valor del atributo modules
de AspNetCoreModule
a AspNetCoreModuleV2
.<aspNetCore>
, agregue el atributo del modelo de hospedaje (hostingModel="InProcess"
).Para saber más sobre el archivo de ejemplo web.config, vea Módulo ASP.NET Core (ANCM) para IIS.
Si tiene como destino .NET Core, quite el atributo de la referencia de metapaquete Version
en el archivo del proyecto. La inclusión de un atributo Version
da como resultado la siguiente advertencia:
A PackageReference to 'Microsoft.AspNetCore.App' specified a Version of `2.2.0`. Specifying the version of this package is not recommended. For more information, see https://aka.ms/sdkimplicitrefs
Para saber más, visite Metapaquete Microsoft.AspNetCore.All para ASP.NET Core.
La referencia de metapaquete debe ser similar al siguiente nodo <PackageReference />
:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
Si tiene como destino .NET Framework, actualice el atributo de cada referencia de paquete Version
a 2.2.0 o posterior. Estas son las referencias de paquete en un proyecto típico de ASP.NET Core 2.2 destinado a .NET Framework:
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.CookiePolicy" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.HttpsPolicy" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.2.0" />
</ItemGroup>
Si hace referencia al paquete Microsoft.AspNetCore.Razor.Design, actualice su atributo Version
a 2.2.0 o posterior. Si no lo hace, se producirá el siguiente error:
Detected package downgrade: Microsoft.AspNetCore.Razor.Design from 2.2.0 to 2.1.2. Reference the package directly from the project to select a different version.
Si la solución se basa en un archivo global.json para que el destino sea una versión específica del SDK de .NET Core, actualice su propiedad version
para usar la versión 2.2 instalada en el equipo:
{
"sdk": {
"version": "2.2.100"
}
}
Si usa Visual Studio Code, actualice el archivo de configuración de inicio del proyecto (.vscode/launch.json
). La ruta de acceso program
debe hacer referencia al nuevo TFM:
{
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/bin/Debug/netcoreapp2.2/test-app.dll",
"args": [],
"cwd": "${workspaceFolder}",
"stopAtEntry": false,
"internalConsoleOptions": "openOnSessionStart",
"launchBrowser": {
"enabled": true,
"args": "${auto-detect-url}",
"windows": {
"command": "cmd.exe",
"args": "/C start ${auto-detect-url}"
},
"osx": {
"command": "open"
},
"linux": {
"command": "xdg-open"
}
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"sourceFileMap": {
"/Views": "${workspaceFolder}/Views"
}
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach",
"processId": "${command:pickProcess}"
}
]
}
Si la aplicación llama a UseKestrel llamando CreateDefaultBuilder
al método CreateWebHostBuilder de la clase Program
, llame a ConfigureKestrel
para configurar el servidor Kestrel en lugar de UseKestrel
para evitar conflictos con el modelo de hospedaje en proceso de IIS:
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureKestrel((context, options) =>
{
// Set properties and call methods on options
});
Si la aplicación no llama a CreateDefaultBuilder
y compila el host manualmente en la clase Program
, llame a UseKestrel antes de llamar a ConfigureKestrel
:
public static void Main(string[] args)
{
var host = new WebHostBuilder()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseKestrel()
.UseIISIntegration()
.UseStartup<Startup>()
.ConfigureKestrel((context, options) =>
{
// Set properties and call methods on options
})
.Build();
host.Run();
}
Para más información, consulte Servidor web Kestrel en ASP.NET Core.
Actualice la versión de compatibilidad de Startup.ConfigureServices
a Version_2_2
:
services.AddMvc()
.SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
En ASP.NET Core 2.2, el middleware CORS responde con un origen comodín (*
) si una directiva permite cualquier origen y permite las credenciales. Las credenciales no se admiten cuando se especifica un origen comodín (*
) y los exploradores no permitirán la solicitud CORS. Para obtener más información, incluidas las opciones para corregir el problema en el cliente, consulte la documentación web de MDN.
Para corregir este problema en el servidor, realice una de las siguientes acciones:
builder.WithOrigins("https://api.example1.com", "https://example2.com")
en lugar de AllowAnyOrigin.En la tabla siguiente se muestran los cambios en la etiqueta de la imagen de Docker:
2.1 | 2.2 |
---|---|
microsoft/dotnet:2.1-aspnetcore-runtime |
mcr.microsoft.com/dotnet/core/aspnet:2.2 |
microsoft/dotnet:2.1-sdk |
mcr.microsoft.com/dotnet/core/sdk:2.2 |
Cambie las líneas FROM
del Dockerfile para usar las nuevas etiquetas de imagen en la columna 2.2 de la tabla anterior.
La experiencia de la compilación automática de Visual Studio en la solicitud del explorador no funciona con el modelo de hospedaje en proceso de IIS. Debe recompilar manualmente el proyecto al usar el hospedaje en proceso. Las mejoras en esta experiencia están planeadas para una futura versión de Visual Studio.
El código de configuración de registro recomendado no cambió de 2.1 a 2.2, pero algunos patrones de codificación 1.x que todavía funcionaban en la versión 2.1 ya no funcionan en la versión 2.2.
Si la aplicación registra la inicialización, el filtrado y la carga de configuración del proveedor en la clase Startup
, mueva ese código a Program.Main
:
Inicialización del proveedor:
Ejemplo 1.x:
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole();
}
Ejemplo 2.2:
public static void Main(string[] args)
{
var webHost = new WebHostBuilder()
// ...
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConsole();
})
// ...
}
Filtrado:
Ejemplo 1.x:
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(LogLevel.Information);
// or
loggerFactory.AddConsole((category, level) =>
category == "A" || level == LogLevel.Critical);
}
Ejemplo 2.2:
public static void Main(string[] args)
{
var webHost = new WebHostBuilder()
// ...
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConsole()
.AddFilter<ConsoleLoggerProvider>
(category: null, level: LogLevel.Information)
// or
.AddFilter<ConsoleLoggerProvider>
((category, level) => category == "A" ||
level == LogLevel.Critical)
);
})
// ...
}
Carga de la configuración:
Ejemplo 1.x:
public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(Configuration);
}
Ejemplo 2.2:
public static void Main(string[] args)
{
var webHost = new WebHostBuilder()
// ...
.ConfigureLogging((hostingContext, logging) =>
{
logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
logging.AddConsole();
})
// ...
}
Para obtener más información, vea Registro en .NET Core y ASP.NET Core.
Si el módulo de ASP.NET Core (ANCM) no era un componente seleccionado cuando Visual Studio se instaló o si se instaló una versión anterior de ANCM en el sistema, descargue el instalador de agrupación de hospedaje de .NET Core más reciente (descarga directa) y ejecute el instalador. Para saber más, consulte Conjunto de hospedaje.
Comentarios de ASP.NET Core
ASP.NET Core é un proxecto de código aberto. Selecciona unha ligazón para ofrecer comentarios:
Evento
Campionato do Mundo de Power BI DataViz
Feb 14, 4 PM - Mar 31, 4 PM
Con 4 posibilidades de entrar, poderías gañar un paquete de conferencias e facelo ao Live Grand Finale en Las Vegas
Máis informaciónFormación
Módulo
En este módulo, aprenderá cuándo, por qué y cómo modernizar una aplicación de ASP.NET Framework a ASP.NET Core utilizando el Asistente para actualización.
Certificación
Microsoft Certified: Azure Developer Associate - Certifications
Cree soluciones de un extremo a otro en Microsoft Azure para crear Azure Functions, implementar y administrar aplicaciones web, desarrollar soluciones que usen Azure Storage, etc.
Documentación
Migración de ASP.NET Core 2.0 a 2.1
En este artículo se tratan los aspectos básicos de la migración de una aplicación de ASP.NET Core 2.0 a la versión 2.1.
Migración de ASP.NET Core 3.0 a 3.1
Obtenga información sobre cómo migrar un proyecto de ASP.NET Core 3.0 a ASP.NET Core 3.1.
Migración de ASP.NET Core 3.1 a 5.0
Aprenda a migrar un proyecto de ASP.NET Core 3.1 a ASP.NET Core 5.0.