C # HttpWebRequest CookieContainer / Коллекция сохраняется между экземплярами объекта? - PullRequest
2 голосов
/ 18 марта 2011

У меня возникла проблема с моей программой входа в систему.Если я войду в систему один раз, затем обнуляю CookieContainer и CookieCollection (вместе с моим http-классом), а затем попытаюсь войти снова, он все еще отправляет файлы cookie из первого запроса.Почему к печенькам прилипают?

Пример:

HTTP uh;

MainWindow()
{
    uh = new HTTP(); 
    uh.login("mySite"); 
    //Logging in....
    //Login Successful.....

    uh.cookieContainer = null;
    uh.cookieCollection = null;
    uh = null; 
    uh = new HTTP(); 
    uh.loging("mySite");
    //Logging in, with cookies from first login
    //Login Fails.....

}

РЕДАКТИРОВАТЬ: Грубое представление класса HTTP ...

public class HTTP()
{   
    public CookieContainer cookieContainer;
    public CookieCollection cookieCollection;
    private HttpWebRequest Request;
    private HttpWebResponse Response;

    public HTTP()
    {
        this.cookieContainer = new CookieContainer();
        this.cookieCollection = new CookieCollection();
    }

    public HttpWebResponse login(string url)
    {
        string[] cred = new string[2] { "un", "pw" };

        this.Request = (HttpWebRequest)HttpWebRequest.Create(url);
        this.Request.CookieContainer = cookieContainer;
        byte[] ByteArray = Encoding.UTF8.GetBytes(String.Format("un={0}&pw={1}", cred));
        this.Request.ContentLength = ByteArray.Length;
        Stream DataStream = this.Request.GetRequestStream();
        DataStream.Write(ByteArray, 0, ByteArray.Length);
        DataStream.Close();
        Response = (HttpWebResponse)this.Request.GetResponse();
        this.cookieCollection = Response.Cookies;

        return Response; 
    }

    public bool responseHandle(HttpWebResponse r) 
    {
        //Determines success, logs headers, html body, etc..
    }
}

РЕДАКТИРОВАТЬ |РЕШЕНИЕ: Не было проблем с любым кодом выше.Я совершил глупую ошибку, не вставив код HTTP null / new в кнопку выхода из системы.Так что это никогда не сбрасывалось.Извините, что тратит время впустую.

1 Ответ

2 голосов
/ 18 марта 2011

Срок действия файла cookie истечет, когда вы закончите с ним, и он исчезнет. (AKA, установите дату его истечения на истекшее время).

...