es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error interno del servidor 500 al usar EF Core con NPGSQL.

Estoy intentando usar EF Core y NPGSQL para realizar operaciones de CRUD en nuestra base de datos backend. Mientras ejecuto el método POST, veo un error interno del servidor 500 para cada solicitud alternativa.

Y a continuación se muestra el error que veo en los registros del servidor.

System.InvalidOperationException: No puedo cerrar, la conexión está en estado Conectando
en Npgsql.NpgsqlConnection.Close(Boolean async)
en Npgsql.NpgsqlConnection.CloseAsync()
en Npgsql.NpgsqlConnection.g__DisposeAsyncCore|92_0()
en Microsoft.EntityFrameworkCore.Storage.RelationalConnection.DisposeAsync()
en Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.g__Await|15_0(Int32 i, ValueTask vt, List1 toDispose)
en Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngineScope.<disposeasync>g__Await|15_0(Int32 i, ValueTask vt, List
1 toDispose)
en Microsoft.AspNetCore.Http.Features.RequestServicesFeature.g__Awaited|9_0(RequestServicesFeature servicesFeature, ValueTask vt)
en Microsoft.AspNetCore.Server.IIS.Core.IISHttpContext.FireOnCompleted()

También, veo una respuesta 200 OK de vez en cuando y puedo ver que los registros se escriben en la base de datos postgres.

Aquí está el fragmento de código que estoy usando para guardar los datos en la base de datos.
Operación POST:

public async Task postData(ModelInfo modelInfo)
{
_context.modelAddition.Add(modelInfo);
await _context.SaveChangesAsync().ConfigureAwait(false);
}

Intenté hacer Add() async y también intenté usar el método disposeAsync() y veo un comportamiento similar para todos esos escenarios.

¿Alguna ayuda en esto?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que la conexión se está cerrando antes de conectarse por completo o completar su tarea. Intente usar la palabra clave await con el método CloseAsync () en lugar de llamarlo directamente. Esto asegurará que la conexión se cierre por completo antes de pasar a la siguiente instrucción.

    Ejemplo:

    await NpgsqlConnection.CloseAsync()
    

    Además, asegúrese de que la cadena de conexión que está utilizando sea válida y de que el servidor de PostgreSQL esté funcionando.

    Si el problema persiste, considere usar un marco de registro para ayudar a diagnosticar el problema aún más. Esto puede proporcionar más información sobre lo que está sucediendo y ayudar a identificar la causa raíz.

Comments are closed.