سؤال

إذا ألقيت نظرة على cookievalue .aspxanymous ، فهي سلسلة أي

wznx-rxhygeaaaaaaotfhzje5ytctzmezzi00mtmwlwewntatyjywmzi0n2m0nty4gqusrlthijwajbgmbnpeibeiba7ego1

طلب القيمة. anonymousid هو GUID.

كيف تحصل من aspxanonymous إلى مجهول؟

أحتاج إلى هذا لتصحيح بعض القضايا التي أواجهها مع FormsAuplication.

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

المحلول

نعم ، معرف مجهول هو GUID. سلسلة ملفات تعريف الارتباط هي قيمة مشفرة تحتوي على المعرف والبيانات الأخرى:

[Serializable]
internal class AnonymousIdData
{
    internal string AnonymousId;
    internal DateTime ExpireDate;

    internal AnonymousIdData(string id, DateTime dt);
}

بشكل افتراضي ، تكون ملفات تعريف الارتباط المجهولة صالحة لمدة 90 يومًا ويتم تحديثها في كل زيارة.

يمكنك علاج request.anonymousid كطلب اسم المستخدم عند الطلب.

يرى مجهول الهوية

تحديث: ردًا على تعليق ، نعم ، يمكنك فك تشفير القيمة ، ولكن لماذا؟

string aId = Request.AnonymousID;

string anonCookieValue = Request.Cookies[".ASPXANONYMOUS"].Value;
MethodInfo method = typeof(AnonymousIdentificationModule).GetMethod("GetDecodedValue", BindingFlags.Static | BindingFlags.NonPublic);
object anonymousIdData = method.Invoke(null, new object[] { anonCookieValue });
var field = anonymousIdData.GetType().GetField("AnonymousId", BindingFlags.Instance | BindingFlags.NonPublic);
string anonymousId = (string) field.GetValue(anonymousIdData);
field = anonymousIdData.GetType().GetField("ExpireDate", BindingFlags.Instance | BindingFlags.NonPublic);
DateTime expired = (DateTime) field.GetValue(anonymousIdData);

// why? just use Request.AnonymousID    
Debug.Assert(aId == anonymousId);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top