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

本文关键字:cookie 保留 任何 数据 WebRequest 一部分 作为 | 更新日期: 2023-09-27 17:49:26

这就是我如何设置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();    
}

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

设置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");
类似的问题和答案:
使用相同登录数据库的多个应用程序相互注销
当登录到另一个实例
时,Asp.net表单身份验证注销。当以其他用户登录时丢失会话/cookie