Tengo una aplicación web ASP.NET Core v.3.0 alojada en Amazon AWS Elastic Beanstalk usando Docker. La aplicación funciona bien en Docker con Amazon Linux de 64 bits (v2.16.11). Cuando actualizo a Docker con Amazon Linux 2 de 64 bits (v3.4.12), las solicitudes funcionan bien, excepto las solicitudes AJAX que fallan con el error de código de estado 400 "Solicitud incorrecta". Nada más ha cambiado en el código fuente, dockerfile, etc. Solo la versión de Linux ha cambiado de Amazon Linux a Amazon Linux 2. ¿Alguien tiene una idea de qué es diferente entre Amazon Linux 1 y Amazon Linux 2 que puede ser la causa que conduce a AJAX? fallan las solicitudes?
Más información:
Amazon Linux 1: {IP} - - [10/abr/2022:07:36:01 +0000] "POST {url} HTTP/1.1" 200 3882 "{url2}" "Mozilla/5.0 (Windows NT 10.0; Win64 ; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/100.0.4896.75 Safari/537.36" "{IP2}"
Amazon Linux 2: {IP} - - [10/abr/2022:07:00:14 +0000] "POST {url} HTTP/1.1" 400 0 "{url2}" "Mozilla/5.0 (Windows NT 10.0; Win64 ; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/100.0.4896.75 Safari/537.36" "{IP2}"
La llamada se realiza con jQuery 3.4.1:
var $form = $("#inputForm"); if ($form.length <= 0) return; var data = $form.serialize(); $.ajax({ url: "...", type: "POST", data: data, error: function (jqXHR, textStatus, errorThrown) { alert("There was an error when loading the results (error type = " + errorThrown + ")."); }, success: function (result) { $("#calculationTarget").html(result) });
El problema ya no está presente si el proyecto se actualiza de ASP.NET Core 3.0 a ASP.NET Core 3.1.
Hay una solución muy simple, que es actualizar a ASP.NET Core 3.1
.
En esta versión, el problema que tiene está solucionado.
Consulte los pasos a continuación para actualizar.
Si tiene un archivo global.json
para una versión específica del .NET Core SDK
, actualice la propiedad de la versión.
{ "sdk": { "version": "3.1.101" } }
Actualice TFM a netcoreapp3.1
, como se describe a continuación.
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp3.1</TargetFramework> </PropertyGroup> </Project>
Debe actualizar las referencias del paquete. Para hacer esto, actualice cada Microsoft.AspNetCore.*
( * significa comodín) a 3.1.0
(o cualquier versión posterior).
Si está utilizando Docker (que creo que es), entonces necesita usar una imagen base ASP.NET Core 3.1
. Vea un ejemplo a continuación.
$ docker pull mcr.microsoft.com/dotnet/aspnet:3.1
Para obtener información y pasos adicionales, consulte la guía oficial de migración a ASP.NET Core 3.1
.
En resumen, actualizar su aplicación actual a ASP.NET Core 3.1
debería solucionar su problema.