Hola usuario de nuestro sitio web, descubrimos la solución a lo que estabas buscando, desplázate y la obtendrás más abajo.
Solución:
Esto se debe al tipo de devolución de su método async void
. En general, cuando se utiliza async void
en tu código son malas noticias, porque:
- No puedes esperar a que se complete
- Cualquier excepción no controlada terminará su proceso (¡ay!)
Así que regresa async Task
en vez de async void
de su método de la siguiente manera:
public async Task OnGet(int id)
Book = await _db.Books.SingleOrDefaultAsync(x => x.Id == id);
if(Book == null)
RedirectToPage("Index");
Para más detalles:
-
C#: cuidado con la sincronización void en tu código
-
No se puede acceder a un objeto desechado en ASP.NET Core al inyectar DbContext
Lo que voy a publicar NO es la respuesta a esta pregunta en particular. Pero está relacionado, así que solo para ahorrarle dolor de cabeza a alguien, lo estoy publicando. Estaba encontrando este mismo error.
System.ObjectDisposedException: no se puede acceder a un objeto desechado. etc.
El siguiente era el código con el error (¿puedes verlo?):
[HttpGet("processs/oxxo-spei/ticket-email/paymentIdx")]
public StatusCodeResult ProcessOxxoSpeiTicketEmailAsync(string paymentIdx)
var paymentId = paymentIdx.DecodeRef();
var response = _orderEngine.ProcessOxxoSpeiTicketEmailAsync(paymentId);
return StatusCode(200);
El siguiente cambio lo arregló:
[HttpGet("processs/oxxo-spei/ticket-email/paymentIdx")]
public async Task ProcessOxxoSpeiTicketEmailAsync(string paymentIdx)
var paymentId = paymentIdx.DecodeRef();
var response = await _orderEngine.ProcessOxxoSpeiTicketEmailAsync(paymentId);
// ^^^^I HAD FORGOTTEN TO PUT AWAIT
return StatusCode(200);
Sí, es cierto, había olvidado poner “aguardar” antes de una función que usaba un contexto de base de datos de EF Core. Agregar ‘esperar’ lo arregló. Es tan fácil perdérselo, especialmente si está cansado y no ha cumplido la fecha límite.
valoraciones y reseñas
Finalizando este artículo puedes encontrar las referencias de otros gestores de proyectos, tú de igual forma tienes la habilidad mostrar el tuyo si te gusta.