Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
No ASP.NET Core 5, o MVC adicionou suporte para formatos de saída IAsyncEnumerable<T> armazenando a sequência na memória e formatando a coleção armazenada. No ASP.NET Core 6, ao utilizar System.Text.Json para formatar, o MVC não armazena mais instâncias IAsyncEnumerable<T> em buffer. Em vez disso, o MVC depende do suporte que System.Text.Json adicionou para esses tipos.
Na maioria dos casos, a ausência de buffer não seria observável pelo aplicativo. No entanto, alguns cenários podem ter inadvertidamente confiado na semântica de buffer para serializar corretamente. Por exemplo, retornar uma IAsyncEnumerable<T> que seja baseada em uma consulta do Entity Framework em um tipo com propriedades carregadas lentamente pode resultar na execução simultânea de consultas, o que pode não ser suportado pelo provedor.
Essa alteração não afeta a formatação de saída usando Newtonsoft.Json ou com formatadores baseados em XML.
Versão introduzida
ASP.NET Core 6.0
Comportamento antigo
As instâncias IAsyncEnumerable<T> retornadas de uma ação do MVC como um valor a ser formatado usando ObjectResult ou um JsonResult serão armazenadas em buffer antes de serem serializadas como uma coleção síncrona.
Novo comportamento
Ao formatar usando System.Text.Json, o MVC não armazena mais instâncias IAsyncEnumerable<T> em buffer.
Motivo da alteração
System.Text.Json adicionou suporte para tipos de streaming IAsyncEnumerable<T>. Isso permite um volume de memória menor durante a serialização.
Ação recomendada
Se o seu aplicativo requer bufferização, considere a bufferização manual do objeto IAsyncEnumerable<T>.
// Before
public IActionResult Get()
{
return Ok(dbContext.Blogs);
}
// After
public async Task<IActionResult> Get()
{
return Ok(await dbContext.Blogs.ToListAsync());
}