1. Как уже было сказано в ответе выше, для работы с сессиями, нужно  явно подключать специальные сервисы для этого в ASP.NET Core.  Возможно вы уже это сделали, но я все же повторю этот код.
Для .NET 6  и выше, это нужно сделать в файле Program.cs.
 
builder. Services.AddHttpContextAccessor( );
builder.Services.AddSession()  //Здесь нужно добавить настройки для сессий.
Далее в конвейере добавляем компонент
app.UseSession();
Однако в объекте Session, могут храниться только целые числа или строки,  и для сохранении данных о товарах включенных в корзину покупок нужно будет создать расширение для методов Get и Set для Session, в которых нужно будет настроить сериализацию или десереиализацию сложных объектов хранящихся в сессии, в нашем случае это строка с данными о Товаре из Корзины покупок. Так вот данные  нужно передавать в виде строк или получать строки и преобразовывать в данные о Товаре.  Именно такая настройка хранения данных о Товарах в Сессиях используется в курсе об интернет-магазине на ASP.NET Core MVC,  вот 
видео из этого курса.