Преобразование HttpCookieCollection в NameValueCollection
Моя цель состоит в том, чтобы хранить всю информацию request(*QueryString,Form,Headers,Cookies*)
в одном NameValueCollection
.
Вот мой код до сих пор
var mainNVC = new NameValueCollection();
mainNVC.Add(context.Request.Form); //works
mainNVC.Add(context.Request.Headers); //works
mainNVC.Add(context.Request.QueryString); //works
mainNVC.Add(context.Request.Cookies); // error: Argument 1: cannot convert from 'System.Web.HttpCookieCollection' to 'System.Collections.Specialized.NameValueCollection'
Пробовал использовать Request.Param
однако я не хочу, чтобы переменные сервера были включены.
1 ответ:
Это не работает, потому что
Request.Cookies
имеет типHttpCookieCollection
. Вам нужно будет преобразовать его вNameValueCollection
.Можно создать метод расширения
ToNameValueCollection()
:public static class CookieCollectionExtensions { public static NameValueCollection ToNameValueCollection( this HttpCookieCollection cookieCollection) { var nvc = new NameValueCollection(); foreach (var key in cookieCollection.AllKeys) { nvc.Add(key, cookieCollection[key]); } return nvc; } }
И затем, когда вы добавляете
Cookies
:mainNVC.Add(context.Request.Cookies.ToNameValueCollection());