这就是我设置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();
}
答案 0 :(得分:0)
设置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");
类似的问题和答案:
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