ContextMessageProperty OnReceiveHttpCookies(Message message) { ContextMessageProperty newContext = null; object property; if (message.Properties.TryGetValue(HttpResponseMessageProperty.Name, out property)) { HttpResponseMessageProperty httpResponse = property as HttpResponseMessageProperty; if (httpResponse != null) { string setCookieHeader = httpResponse.Headers[HttpResponseHeader.SetCookie]; if (!string.IsNullOrEmpty(setCookieHeader)) { lock (this.cookieContainer) { if (!string.IsNullOrEmpty(setCookieHeader)) { this.cookieContainer.SetCookies(this.Uri, setCookieHeader); HttpCookieToolbox.TryCreateFromHttpCookieHeader(setCookieHeader, out newContext); } if (!this.contextManagementEnabled) { this.cookieContainer.SetCookies(this.Uri, HttpCookieToolbox.RemoveContextHttpCookieHeader); } } } } } return(newContext); }
string GetCookieHeaderFromContext(ContextMessageProperty contextMessageProperty) { if (contextMessageProperty.Context.Count == 0) { return(HttpCookieToolbox.RemoveContextHttpCookieHeader); } else { return(HttpCookieToolbox.EncodeContextAsHttpSetCookieHeader(contextMessageProperty, this.Uri)); } }
void OnReceiveHttpCookies(Message message) { object property; if (message.Properties.TryGetValue(HttpRequestMessageProperty.Name, out property)) { HttpRequestMessageProperty httpRequest = property as HttpRequestMessageProperty; if (httpRequest != null) { string cookieHeader = httpRequest.Headers[HttpRequestHeader.Cookie]; ContextMessageProperty messageContext; if (!string.IsNullOrEmpty(cookieHeader) && HttpCookieToolbox.TryCreateFromHttpCookieHeader(cookieHeader, out messageContext)) { messageContext.AddOrReplaceInMessage(message); } } } }
void OnSendHttpCookies(Message message, ContextMessageProperty context, Uri requestUri) { object tmpProperty; HttpResponseMessageProperty property = null; if (message.Properties.TryGetValue(HttpResponseMessageProperty.Name, out tmpProperty)) { property = tmpProperty as HttpResponseMessageProperty; } if (property == null) { property = new HttpResponseMessageProperty(); message.Properties.Add(HttpResponseMessageProperty.Name, property); } string setCookieHeader = HttpCookieToolbox.EncodeContextAsHttpSetCookieHeader(context, requestUri); property.Headers.Add(HttpResponseHeader.SetCookie, setCookieHeader); }