ضبط خصائص الملف الشخصي في asp.net
سؤال
لقد قمت بإنشاء نموذج الاشتراك الخاص بي وإنشاء المستخدم باستخدام فئة العضوية.
MembershipCreateStatus status;
MembershipUser newUser = Membership.CreateUser(tbxUsername.Text,
tbxPassword.Text,
tbxEmail.Text,
null, null, true, out status);
بعد إنشاء المستخدم باستخدام الكود about، أحاول تعيين بعض خصائص الملف الشخصي مثل ذلك
Profile.CountryCode = ddlCountry.SelectedValue;
Profile.DisplayName = tbxDisplayName.Text;
Profile.Save();
ومع ذلك أحصل على رسالة الاستثناء التالية
لا يمكن تعيين هذه الخاصية للمستخدمين المجهولين.
أي أفكار لماذا أحصل على هذا؟
المحلول
أعتقد أن هذا لأنك لم تجلب الملف الشخصي أولاً (من قاعدة البيانات/مهما كان ما تستخدمه).
قد يبدو الكود الخاص بك كما يلي:
ProfileCommon p = Profile.GetProfile(tbxUsername.Text);
p.CountryCode = ddlCountry.SelectedValue;
p.DisplayName = tbxDisplayName.Text;
p.Save();
نصائح أخرى
لقد واجهت نفس الخطأ وكان ذلك لأنني كنت أقوم فقط بتعيين ملف authCookie، ولكن لا أقوم بتعيين مستخدم httpcontext.هوذا:
HttpCookie authCookie = HttpContext.CurrentRequest.Cookies[FormsAuthentication.FormsCookieName];
if (authCookie != null)
{
//Extract the forms authentication cookie
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
// If caching roles in userData field then extract
string[] roles = authTicket.UserData.Split(new char[] { '|' });
// Create the IIdentity instance
IIdentity id = new FormsIdentity(authTicket);
// Create the IPrinciple instance
IPrincipal principal = new GenericPrincipal(id, roles);
// Set the context user
HttpContext.Current.User = principal;
}
شكر خاص ل هذا المشنور للكود!
لا تنتمي إلى StackOverflow