public static class Extensions { public static string GetOutgoingCookies(this OperationContext context) { var props = context.IncomingMessageProperties; var prop = props[HttpResponseMessageProperty.Name] as HttpResponseMessageProperty; var cookies = prop.Headers[HttpResponseHeader.SetCookie]; return ConstructCookies(cookies); } public static void SetOutgoingCookies(this OperationContext context, string cookies) { var prop = new HttpRequestMessageProperty(); prop.Headers.Add(HttpRequestHeader.Cookie, cookies); context.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = prop; } private static string ConstructCookies(string incomingCookies) { var cookies = incomingCookies.Split(new char[] { ',', ';' }); StringBuilder buffer = new StringBuilder(incomingCookies.Length * 10); foreach (var entry in cookies) { if (entry.IndexOf("=") > 0 && !entry.Trim().StartsWith("path") && !entry.Trim().StartsWith("expires")) { buffer.Append(entry).Append("; "); } } if (buffer.Length > 0) { buffer.Remove(buffer.Length - 2, 2); } return buffer.ToString(); } }