0

これが私がCookieデータを設定し、Webリクエストを渡す方法です。fiddlerを使用してWebサイトからの応答を確認すると、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();    
}
4

1 に答える 1

0

www.domain.comCookie を設定するときは、と だけで Cookie が異なるため、ドメインも設定する必要がありますdomain.com

domainそれらを同じにするには、Cookieに を設定する必要があります。最初にweb.config

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

2 つ目は、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 が失われる

于 2012-12-25T19:56:15.753 に答える