Пытаетесь получить значение 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 и Добавить, чтобы получить / добавить куки.