EF Core aleatoriamente recorre las tablas de usuario en las solicitudes de API después de la migración de .NET Core 2.2 a 3.1.
Después de migrar de .NET Core 2.2 a 3.1, EF Core comenzará aleatoriamente a rastrear la tabla de usuarios y crear cientos / miles de registros (ver imagen, el registro específico está resaltado en azul en la parte inferior).
He seguido las guías de migración de Microsoft, como 2.2 a 3.0 y 3.0 a 3.1 (Ejemplo: https://learn.microsoft.com/da-dk/aspnet/core/migration/22-to-30?view=aspnetcore-2.1&tabs=visual-studio).
Información importante: Esto comenzó a suceder después de que agregué app.UseAuthorization();
en Startup.cs
, lo cual no estaba allí antes.
¿Alguna idea de qué podría desencadenar esto?
Esto resulta en el siguiente error después de unos 30 segundos: 504 Gateway Time-out.
Estoy usando NuGet AspNet.Security.OpenIdConnect.Server
.
Actualización: Parece suceder en Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException: Database operation expected to affect 1 row(s) but actually affected 0 row(s).
Por lo tanto, erradicar esa excepción debe solucionarlo, pero sería muy cuidadoso al enviar esta migración al servidor de producción, si alguna excepción puede hacer que EF Core comience a rastrear sin cesar.
Imagen: https://i.stack.imgur.com/CuWwF.png
davy.ai
Es posible que el middleware
app.UseAuthorization()
esté causando el problema. Este middleware es responsable de autorizar solicitudes y podría estar haciendo que EF Core comience a rastrear la tabla de Usuarios.También es posible que el problema esté relacionado con la excepción
Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException
. Esta excepción se lanza cuando el número de filas afectadas no es igual al número de filas esperadas. Es posible que esta excepción esté haciendo que EF Core comience a rastrear la tabla de Usuarios.Para resolver el problema, deberías intentar erradicar la excepción
Microsoft.EntityFrameworkCore.DbUpdateConcurrencyException
. Si esto no resuelve el problema, deberías intentar eliminar el middlewareapp.UseAuthorization()
de tu archivoStartup.cs
.