Это связано с пробелами в вашем значении cookie (и в моем случае, Json)..NET Core использует RFC-6265 .Допустимые символы - буквенно-цифровые символы плюс ~!@#$%^&*()-_+[]{}|
.Пробел, запятая, точка с запятой, обратная косая черта и кавычки недопустимы.
Самое простое решение - использовать кодировку / декодирование Uri.
Javascript для установки значения cookie:
document.cookie = 'ClientTimeZone=' + encodeURIComponent("New Zealand Time") + ';path=/';
C #, чтобы прочитать его:
var timeZone = System.Net.WebUtility.UrlDecode(Request.Cookies["ClientTimeZone"]);
Источником проблемы является разбор значений заголовков в файлы cookie:
Microsoft.Net.Http.Headers.HttpHeaderParser
{
protected virtual bool TryParseValues(IList<string> values, bool strict, out IList<T> parsedValues)
}
В конце концов срабатывает следующий метод, который завершается, как толькопоскольку он попадает в запрещенный символ:
Microsoft.Net.Http.Headers.CookieHeaderValue
{
internal static StringSegment GetCookieValue(StringSegment input, ref int offset)
}
По сути, даже если файл cookie отправляется в заголовке запроса, любой файл cookie, который не анализируется правильно, автоматически игнорируется и никогда не включается в IRequestCookieCollection Request.Cookies.