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