Как сделать так, чтобы при извлечении файлов cookie учитывался регистр - PullRequest
0 голосов
/ 08 ноября 2019

Предположим, есть 2 записи cookie на стороне клиента:

cookieExample1 = 1
cookieExaMPLE1 = 2

На серверной стороне я использую следующий код:

var value1 = HttpContext.Current.Request.Cookies["cookieExample1"].Value;
logger.Info(value1); //result: 1
var value2 = HttpContext.Current.Request.Cookies["cookieExaMPLE1"].Value;
logger.Info(value2); //result: 1

Мой вопрос: каксделать извлечение значений файлов cookie чувствительным к регистру? Я изменил регистр имени параметра cookie в существующем приложении, но я все еще получаю старое значение, которое было связано с предыдущим именем.

Ответы [ 2 ]

1 голос
/ 09 ноября 2019

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

var request = HttpContext.Current.Request;
var cookie = request.Cookies.Cast<HttpCookie>().SingleOrDefault(cookie => cookie.Name == "case sensitive name");
1 голос
/ 08 ноября 2019

Используя HttpContext.Current.Request.Cookies["cookieExaMPLE1"].Value, вы всегда получите значение первого куки с этим именем без учета регистра. Файлы cookie не не чувствительны к регистру.

Вы можете получить доступ к файлам cookie с помощью небольшого обходного пути:

for (int index = 0; index < cookies.Count; index++)
{
    writer.Write("<li>{0:D}> <b>", index);
    HttpUtility.HtmlEncode(cookies.GetKey(index), writer);
    writer.Write("</b> = &quot;");
    HttpUtility.HtmlEncode(cookies[index].Value, writer);
    writer.Write("&quot;</li>");
}
// -> cookieExample1=1 cookieExaMPLE1=2

Для чего нужны файлы cookie или в общем сеансепараметры, нечувствительны к регистру, см. .NET HttpSessionState Не чувствительность к регистру . Короткий вывод - поддерживать обратную совместимость asp.net со старыми версиями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...