C# HttpWebRequest CookieContainer/Collection المستمر بين مثيلات الكائن؟
-
27-10-2019 - |
سؤال
لقد واجهت مشكلة في برنامج تسجيل الدخول الخاص بي.إذا قمت بتسجيل الدخول مرة واحدة، ثم 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، اضبط تاريخ انتهاء الصلاحية على وقت منقضي).
لا تنتمي إلى StackOverflow