试图获取我在 ARCGIS Online 上设置的 cookie 值但没有取回任何值?
Trying to get a cookie value which I set on ARCGIS online but not getting any value back?
我正在尝试使用适用于 .net v100 的 ESRI 运行时 SDK 在 ESRI Arcgis Online 中设置 cookie。
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 时,我得到了 null。
CookieHeaderValue cookie = context.Request.Headers.GetCookies("customCookie").FirstOrDefault();
我想知道是否有其他方法可以获取我设置回的cookie?
您使用的是 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 并添加到 retrieve/add cookies。
我正在尝试使用适用于 .net v100 的 ESRI 运行时 SDK 在 ESRI Arcgis Online 中设置 cookie。
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 时,我得到了 null。
CookieHeaderValue cookie = context.Request.Headers.GetCookies("customCookie").FirstOrDefault();
我想知道是否有其他方法可以获取我设置回的cookie?
您使用的是 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 并添加到 retrieve/add cookies。