Обработка запятой внутри значения cookie с помощью C# и .NET 6

Я столкнулся с проблемой при попытке прочитать содержимое стороннего файла cookie.

Файл cookie содержит такие значения, как: 110, IN, ABC, X, Y,,,,,

Я читаю файл cookie, используя:

_httpContextAccessor.HttpContext.Request.Cookies["key"];

Но он не вернул все данные.

Примечание. Это сторонний файл cookie, и я не могу его закодировать, чтобы избавиться от него.

🤔 А знаете ли вы, что...
C# позволяет создавать собственные библиотеки классов и использовать их в других проектах.


1
60
2

Ответы:

Если вы хотите получить ключевые значения и использовать их или работать с ними, лучше всего использовать split

var cookieValue = _httpContextAccessor.HttpContext.Request.Cookies["key"];
if (cookieValue != null)
{
    var values = cookieValue.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
    foreach (var value in values)
    {
        // here you could save the values ​​in a list or work with them
    }
}

Решено

Я получил исправление: вместо получения значения cookie, например

Получите, как показано ниже:

 private string ParseCookie(string cookieKey)
 {
    var cookieHeader = 
    _httpContextAccessor.HttpContext.Request.Headers["Cookie"].ToString();
    if (!string.IsNullOrEmpty(cookieHeader))
    {
       // Split the cookies by ';' which is the delimiter for multiple cookies
       var cookies = cookieHeader.Split(';');
       foreach (var cookie in cookies)
       {
        // Split the individual cookie by '='
        var parts = cookie.Split('=');
        if (parts.Length == 2)
        {
            var key = parts[0].Trim();
            var value = parts[1].Trim();

            if (key == cookieKey)
            {
                // Process the comma-separated value
                return Uri.UnescapeDataString(value);
                // Perform any necessary actions based on the cookie value
                break;
            }
        }
    }
  }
  return String.Empty;
}