Cookie作为WebRequest的一部分发送时不会保留任何数据

时间:2012-12-25 19:41:32

标签: c# asp.net webforms

这就是我设置cookie数据和传递Web请求的方式。当我使用fiddler查看来自网站的回复时,我看到cookie没有数据,到期数据设置为1900年1月1日。任何帮助都将非常感激。如果以下代码中的内容不清楚,或者您需要更多信息来回答我的问题,请告诉我。感谢。

System.Net.Cookie userType = 
    new System.Net.Cookie("CUserType","subscriber", "/", "www.DOMAIN_NAME.com");
userType.Expires = DateTime.Now.AddYears(1);
System.Net.Cookie dUserType = 
    new System.Net.Cookie("dCUserType", "subscriber", "/", "www.DOMAIN_NAME.com");
dUserType.Expires = DateTime.Now.AddYears(1);

System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer();
cookieContainer.Add(userType);    
cookieContainer.Add(dUserType);

HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(URL);

webRequest.Proxy = new WebProxy("127.0.0.1", 8888);   
webRequest.Referer = "http://DOMAIN_NAME/search/index.aspx?lid=3";  
webRequest.ContentType = "application/x-www-form-urlencoded";   
webRequest.Date = DateTime.Now;    
webRequest.CookieContainer = cookieContainer;

string result;

using (var stream = webRequest.GetResponse().GetResponseStream())
using (var reader = new StreamReader(stream, Encoding.UTF8))    
{
    result = reader.ReadToEnd();    
}

1 个答案:

答案 0 :(得分:0)

设置Cookie时,您还需要设置域名,因为www.domain.comdomain.com的Cookie不同。

要使它们相同,您需要在Cookie上设置domain。 首先是web.config

<authentication mode="Forms">
 <forms domain="yoururl.com" ... />
</authentication> 

,第二次手动设置cookie时(不包括www。):

Response.Cookies[cookieName].Domain = "yoururl.com";

或在您设置时(不包含子域名www.):

System.Net.Cookie dUserType = 
    new System.Net.Cookie("dCUserType", "subscriber", "/", "DOMAIN_NAME.com");

类似的问题和答案:
Multiple applications using same login database logging each other out
asp.net forms authentication logged out when logged into another instance
Lost session/cookie when login as another user