C# HttpWebRequest CookieContainer/Collection المستمر بين مثيلات الكائن؟

StackOverflow https://stackoverflow.com/questions/5353999

سؤال

لقد واجهت مشكلة في برنامج تسجيل الدخول الخاص بي.إذا قمت بتسجيل الدخول مرة واحدة، ثم CookieContainer وCookieCollection (جنبًا إلى جنب مع فئة http الخاصة بي)، ثم حاول تسجيل الدخول مرة أخرى، فإنه لا يزال يرسل ملفات تعريف الارتباط من الطلب الأول.لماذا تلتصق ملفات تعريف الارتباط؟

مثال:

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 رمز فارغ/جديد في زر تسجيل الخروج الخاص بي.لذلك لم يتم إعادة ضبطه أبدًا.آسف لإضاعة وقت الجميع.

هل كانت مفيدة؟

المحلول

تنتهي صلاحية ملف تعريف الارتباط عند الانتهاء منه وسوف يختفي.(AKA، اضبط تاريخ انتهاء الصلاحية على وقت منقضي).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top