作为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();
}
设置cookie时,还需要设置域名,因为www.domain.com
和domain.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