Я создаю интернет-магазин с использованием Stripe и. Net, и у меня возникают некоторые проблемы с сеансом, который не сохраняется в моем веб-крючке, и в результате веб-крючок не может получить корзину или информацию о клиенте.
Мой метод добавления в корзину выглядит следующим образом:
var cartList = new List<CartProduct>();
var stringObj = _session.GetString("cart");
/* Logic for deserializing stringObj into List<CartProduct> */
stringObj = JsonConvert.SerializeObject(cartList);
_session.SetString("cart", stringObj);
Если я смотрю на _session, я вижу, что у него есть идентификатор. Тем не менее, когда я пытаюсь получить корзину из своего веб-крючка, идентификатор сеанса изменился, и в результате корзина становится пустой.
Мой метод get cart запускается на charge.succeeded с использованием веб-крючка и запускается примерно так :
var cart = _session.GetString("cart"); // Returns null because session has changed
var cartList = JsonConvert.DeserializeObject<List<CartProduct>>(cart); // Exception thrown due to cart being null
Я пытался сделать повара ie обязательным и установить CheckConsentNeeded в false. Это мой метод ConfigureServices файла startup.cs:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
services.AddMvc(option => option.EnableEndpointRouting = false);
services.AddSession(options => {
options.Cookie.Name = "cart";
options.Cookie.MaxAge = TimeSpan.FromDays(365);
options.Cookie.IsEssential = true; // make the session cookie Essential
});
services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration["DefaultConnection"], b => b.MigrationsAssembly("ShopTutorial.Database")));
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => false;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
}
app.UseSession (); был добавлен в метод Configure того же класса.