Проблема с файлами cookie при использовании веб-приложения asp net core

#asp.net-mvc #asp.net-core #cookies

Вопрос:

Я работаю с приложением корзины покупок. Я разработал приложение, которое поддерживает пользовательские корзины покупок с помощью файлов cookie. Он работал отлично, пока я не внес некоторые изменения в пользовательский интерфейс, и теперь он не работает, теперь я понятия не имею, что я сделал не так, потому что я сохраняю файлы cookie с помощью внутреннего кода c# без прерывания, когда интерфейс только читает эти файлы cookie и передает их в модель просмотра, чтобы показать на панели корзины. Вот мой код

Startup.cs

 app.UseRouting();  app.UseCookiePolicy();  app.UseAuthentication();  

Добавление товаров в корзину

 public JsonResult AddToShoppingCart(UserProductVM model)  {  try  {  if (string.IsNullOrEmpty(model.SelectedSize))  return Json(new { status = false, msg = "Please select size to proceed." });  var result = ShoppingCartHelper.GetShoppingCartList(model, _httpContextAccessor);  if (result.Status lt;= 0)  return Json(new { status = false, msg = result.Message });  Response.Cookies.Delete("ShoppingCart");  Response.Cookies.Append("ShoppingCart", JsonConvert.SerializeObject(result.Data));  return Json(new { status = true, msg = "Success! added to shopping cart." });  }  catch (Exception ex)  {  return Json(new { status = false, msg = ex.Message.ToString() });  }  }  

Чтение Из Корзины

 public static string GetShoppingCartFromCookies(IHttpContextAccessor _httpContextAccessor)  {  return _httpContextAccessor.HttpContext?.Request?.Cookies["ShoppingCart"]?.ToString();  }  

Все работало нормально, и теперь ничего не работает, файлы cookie не добавляются в список файлов cookie. Это тот же код, который у меня есть, а также резервная копия моего приложения, и когда я запускаю файлы cookie этого приложения, они работают отлично, но проблема в том, что со старым дизайном я больше не использую этот дизайн пользовательского интерфейса. Это один и тот же код, работающий в одном приложении, но не работающий с другим приложением с другим пользовательским интерфейсом.

Комментарии:

1. у кого-нибудь есть хоть малейшая догадка, чего мне не хватает

Ответ №1:

Вы добавили IHttpContextAccessor в контейнер зависимостей ?

 services.TryAddSingletonlt;IHttpContextAccessor, HttpContextAccessorgt;();  

Комментарии:

1. Услуги. AddHttpContextAccessor(); Я добавил так, иначе это дало бы мне ошибку внедрения зависимостей

2. возможно, ваш браузер заблокировал файлы cookie для этого URL-адреса, попробуйте изменить порт вашего URL-адреса

3. и еще одна вещь, когда вы вызываете GetShoppingCartFromCookies, какой httpcontext вы передаете ? ввели один или новый ?

4. Я вызываю его с базового контроллера

5. выполняет _httpContextAccessor. HttpContext содержит данные или возвращает значение null ?

Ответ №2:

Я решил свой вопрос. Проблема заключалась в том, что в основном я добавлял строку изображения base64, которая не работала. Когда я комментирую эту строку, она отлично работала, не нужно было менять какой-либо код.

 public static GenericResponseDTOlt;Listlt;ShoppingCartViewModelgt;gt; GetShoppingCartList(UserProductVM model, IHttpContextAccessor _httpContextAccessor)  {  var shoppingcartmodel = new Listlt;ShoppingCartViewModelgt;();  var cartmodel = new ShoppingCartViewModel  {  RestaurantId = model.RestaurantId,  SubCategoryId = model.SubCategoryId,  RestaurantSubCategoryId = model.RestaurantSubCategoryId,  OrderGuid = Guid.NewGuid(),  Quantity = model.Quantity,  //ItemImage = model.ItemImage,  SelectedSize = model.SelectedSize.Split('-')[0],  SingleItemPrice = Convert.ToDecimal(model.SelectedSize.Split('-')[1]),  SubCategoryName = model.SubCategoryName,  TotalItemPrice = (model.Quantity * Convert.ToDecimal(model.SelectedSize.Split('-')[1]))  };  if (string.IsNullOrEmpty(GetShoppingCartFromCookies(_httpContextAccessor)))  shoppingcartmodel.Add(cartmodel);  else  {  shoppingcartmodel = JsonConvert.DeserializeObjectlt;Listlt;ShoppingCartViewModelgt;gt;(GetShoppingCartFromCookies(_httpContextAccessor));  if (shoppingcartmodel.Any(x =gt; x.RestaurantSubCategoryId == model.RestaurantSubCategoryId))  return new GenericResponseDTOlt;Listlt;ShoppingCartViewModelgt;gt; { Data = new Listlt;ShoppingCartViewModelgt;(), Status = -1, Message = "Item is alreay exists in your cart please remove and add another." };  shoppingcartmodel.Add(cartmodel);  }  return new GenericResponseDTOlt;Listlt;ShoppingCartViewModelgt;gt; { Data = shoppingcartmodel, Status = 1 };  }  

Я прокомментировал линию ItemImage, и она работает как заклинание. Может быть, это поможет решить чью-то еще проблему.