This is because of your method return type async void. In general, when you are using async void in your code it’s bad news, because:
- You can’t wait for its completion
- Any unhandled exceptions will terminate your process (ouch!)
So return async Task instead of async void from your method as follows:
public async Task OnGet(int id)
{
Book = await _db.Books.SingleOrDefaultAsync(x => x.Id == id);
if(Book == null)
{
RedirectToPage("Index");
}
}
For more details:
-
C# – beware of async void in your code
-
Cannot access a disposed object in ASP.NET Core when injecting DbContext