【问题标题】:Convert HttpCookieCollection to NameValueCollection将 HttpCookieCollection 转换为 NameValueCollection
【发布时间】:2015-01-09 07:56:57
【问题描述】:

我的目标是将所有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 但是,我不希望包含服务器变量。

【问题讨论】:

    标签: c# httpcookie namevaluecollection


    【解决方案1】:

    这不起作用,因为Request.CookiesHttpCookieCollection 类型。 您需要将其转换为 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].Value);
            }
    
            return nvc;
        }
    }
    

    然后当你添加Cookies:

    mainNVC.Add(context.Request.Cookies.ToNameValueCollection());
    

    【讨论】:

    • 不应该是nvc.Add(key, cookieCollection[key].Value);吗?或许还要检查一下是否为空?
    猜你喜欢
    • 2011-08-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2011-10-23
    • 2013-08-03
    • 1970-01-01
    相关资源
    最近更新 更多