2015-01-09 38 views
2

我的目標是將所有request(*QueryString,Form,Headers,Cookies*)信息存儲到一個NameValueCollection將HttpCookieCollection轉換爲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不過,我不希望被包括在服務器變量都試過。

回答

3

這不起作用,因爲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()); 
+0

作品的魅力感謝 – tangol100

+1

它不應該是 'nvc.Add像(key,cookieCollection [key] .Value);'? 也許檢查null? – Leoz

相關問題