Пытаетесь получить значение cookie, которое я установил в ARCGIS онлайн, но не получаете никакого значения обратно?

Я пытаюсь установить cookie в ESRI Arcgis онлайн, используя ESRI runtime SDK для.net v100.

        var cookie = new CookieHeaderValue("customCookie", cred.Token);             
        var response = Request.CreateResponse(HttpStatusCode.OK, new    {
                                                                            token = cred.Token,
                                                                            expires = cred.ExpirationDate
                                                                        });
        response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");            
        response.Headers.AddCookies(new CookieHeaderValue[] { cookie });
        return response;

Теперь, когда я пытаюсь получить этот cookie позже в последующих запросах, используя ниже, я получаю нулевое значение.

CookieHeaderValue cookie = context.Request.Headers.GetCookies("customCookie").FirstOrDefault();

Мне интересно, есть ли другой способ получить печенье, которое я установил обратно?

1 ответ

Решение

Вы используете v100?

Если да, вы можете попробовать следующий код:

        ArcGISHttpClientHandler.HttpRequestBegin += (sender, request) =>
        {
            var cookieContainer = ((System.Net.Http.HttpClientHandler)sender).CookieContainer;
            var cookies = cookieContainer.GetCookies(request.RequestUri);
            var customCookie = new Cookie("customCookie", "someValue") { Domain = request.RequestUri.Host };
            bool foundCookie = false;
            foreach (Cookie cookie in cookies)
            {
                if (cookie.Name == customCookie.Name)
                {
                    foundCookie = true;
                    break;
                }
            }
            if (!foundCookie)
                cookieContainer.Add(customCookie);

        };

ArcGISHttpClientHandler имеет событие HttpRequestBegin, которое вызывается при каждом запросе. Вы можете использовать CookieContainer.GetCookies и Добавить, чтобы получить / добавить куки.

Другие вопросы по тегам