System.ArgumentNullException: Key cannot be null. Membership.UpdateUser
במידה וירשתם מ - MembershipProvider ומ - Membership יש סיכוי טוב מאוד שכשתנסו להפעיל את מתודת Membership.UpdateUser תקבלו שגיאה
System.ArgumentNullException: Key cannot be null
זה קצת מוזר כי גם אם הגדרתם בקונפיג את ה - defaultProvider למימוש שלכם זה עדיין יקרה, מכיון של - Membership יש שני בנאים הראשון מוגדר כ - protected והוא לא מקבל שום פרמטרים, השני מוגדר כ - public ומקבל כל מיני פרמטרים שאחד מהם הוא ה - providerName.
ברגע שהפעלתם את הבנאי ללא שום פרמטר הוא לא יודע לאיזה provider ללכת ולכן הוא נופל בקטע קוד הזה
internal virtual void Update()
{
Membership.Providers[this.ProviderName].UpdateUser(this);
this.UpdateSelf();
}
כשהוא מנסה לגשת בעזרת ProviderName שמחזיר null.
הייתי מצפה ממי שכתב את הקוד הזה שיבדוק במידה ואין ערך ל - ProviderName לקחת את ה - Provider שמוגדר כברירת מחדל, או לכל הפחות לזרוק שגיאה נורמלית.
כדי לפתור את זה צריך במחלקה שיורשת מ - Membership לכתוב.
public override string ProviderName
{
get
{
return Membership.Provider.Name;
}
}