PDA

View Full Version : خطایMembership create user



bitcob589
شنبه 01 بهمن 1390, 19:44 عصر
با ممبرشیپ برای اضافه کردن کاربربه صورت زیر


Membership.CreateUser(txtuser.text,txtpassword.tex t,txtemil.text)

خطای زیر را می دهد

Membership Create User Exception was Unhandled by user code
علت خطا چیست

bftarane
شنبه 01 بهمن 1390, 19:49 عصر
فکر کنم کدهاي زير کمک کنه.

protected void btncreateuser_Click(object sender, EventArgs e)
{
MembershipCreateStatus createStatus;
MembershipUser newUser =
Membership.CreateUser(txtusername.Text, txtpass.Text, txtemail.Text,
passwordquestion, Txtsecurityanswer.Text, true, out createStatus);
switch (createStatus)
{
case MembershipCreateStatus.DuplicateEmail:
lblcreateaccountresults.Text
= "ایمیل تکراری است.";
break;
case MembershipCreateStatus.DuplicateProviderUserKey:
break;
case MembershipCreateStatus.DuplicateUserName:
lblcreateaccountresults.Text
= "نام کاربری تکراری است.";
break;
case MembershipCreateStatus.InvalidAnswer:
lblcreateaccountresults.Text
="پاسخ نامعتبر است.";
break;
case MembershipCreateStatus.InvalidEmail:
lblcreateaccountresults.Text
= "ایمیل نامعتبر است.";
break;
case MembershipCreateStatus.InvalidPassword:
lblcreateaccountresults.Text
= "رمز عبور باید دارای 7 کاراکتر و حداقل یک کاراکتر غیر حرفی عددی باشد";
break;

case MembershipCreateStatus.Success:
lblcreateaccountresults.Text
= "حساب کاربری با موفقیت ایجاد شد";
break;

default:
lblcreateaccountresults.Text
= "خطا. حساب کاربری ایجاد نشد.";
break;
}

}

bitcob589
شنبه 01 بهمن 1390, 22:18 عصر
Membership.CreateUser(txtusername.Text, txtpass.Text, txtemail.Text,
passwordquestion, Txtsecurityanswer.Text, true, out createStatus);

کار true و out چیست

bftarane
شنبه 01 بهمن 1390, 23:57 عصر
ببين تا جايي که من مي دونم out در جايي استفاده مي شه که مي خواهيم مقداري برگردانده بشه که در اينجا مقدار createStatus رو ما مي خواهيم برگردونده بشه
اين مثالي که من براي شما نوشتم از اين overload متد CreateUser استفاده ميکنه:
81248

اون True هم مربوط به isApproved هست اگه بري جدول رو نگاه کني مي بيني که فيلد isApproved مقدار True گرفته.

البته شما از يه overload ديگه استفاده کرده بودي
خوب من اون را تا حالا امتحان نکرده بودم ولي همين الآن يه وب سايت جديد ايجاد کردم و سعي کردم انجام بدم و کاربر درج شد.
کدي که در رويداد کليک دکمه ثبت کاربر نوشتم

protected void btncreateuser_Click(object sender, EventArgs e)
{

MembershipUser newUser =
Membership.CreateUser(txtusername.Text, txtpass.Text, txtemail.Text);
lblcreateaccountresults.Text = "کاربر درج شد";


}

در web.config هم اين رو بعد از قسمت <system.web> اضافه کردم

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
<providers>
<add name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="LocalSqlServer"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
passwordFormat="Hashed"
applicationName="/" />
</providers>
</membership>
من که مشکلي نمي بينم.
از دوستاني که قبلاً با اين overload کار کردن خواهش مي کنم اگه ايرادي در اين کدها مي بينن بيان کنن.

موفق باشي.

bitcob589
یک شنبه 02 بهمن 1390, 13:29 عصر
اگر امکان دارد برای حذف کاربر و تغییر کلمه عبور کاربر دستوراتش را بنویسید

bftarane
دوشنبه 03 بهمن 1390, 13:33 عصر
يه لينک عالي در اين مورد پيدا کردم
http://msdn.microsoft.com/En-US/library/t8yy6w3h.aspx
خيلي جالبه
requiresQuestionAndAnswer در web.config چه false باشه چه true کار ميکنه
اگه از false به true تغييرش بدي و بري صفحه ديزاين رو نگاه کني مي بيني براي سوال و جواب textbox اضافه شده.
پيشنهاد مي کنم امتحان کنيد و خودتون ببينيد. (گرچه خودم با لوگين کردن بعد از ثبت کار به به مشکل خوردم، authentication mode رو هم Forms گذاشتم و هم Windows بازم مشکل رفع نشد ولي به هر حال به نظرم لينک خوبيه)
...............................
در مورد deleteuser
مي توني از اين دو تا لينک رو برات مي زارم من خودم فقط اولي رو امتحان کردم
http://msdn.microsoft.com/en-us/library/5xxz7y3a.aspx

http://msdn.microsoft.com/en-us/library/w6b0zxdw.aspx

...................
در مورد تغيير password هم کافيه يه کنترل ChangePassword در يه صفحه بندازي و يه لينک به اسم مثلاً تغيير پسورد به اون صفحه داشته باشي، به کدنويسي هم نيازي نداره.

bftarane
دوشنبه 03 بهمن 1390, 16:20 عصر
(گرچه خودم با لوگين کردن بعد از ثبت کار به به مشکل خوردم، authentication mode رو هم Forms گذاشتم و هم Windows بازم مشکل رفع نشد ولي به هر حال به نظرم لينک خوبيه)دليلش رو فهميدم
وقتي در web.config, requiresQuestionAndAnswer برابر true بود رفتم يه کاربر ثبت کردم
بعد رفتم جدول رو نگاه کردم ديدم فيلد IsApproved مقدارش False هست.
بعد دستي که اون رو به True تبديل کردم کاربر تونست لوگين کنه.
ولي وقتي requiresQuestionAndAnswer مقدارش false بود کاربر ثبت شده بدون مشکل تونست لوگين کنه.

حالا راه حل:
اين قسمت رو ببينيد

try
{
// Create new user.

if (Membership.RequiresQuestionAndAnswer)
{
MembershipUser newUser = Membership.CreateUser(
UsernameTextbox.Text,
PasswordTextbox.Text,
EmailTextbox.Text,
PasswordQuestionTextbox.Text,
PasswordAnswerTextbox.Text,
false,
out result);
}
کافيه به جاي اون true, false قرار بديد.:لبخندساده:

bitcob589
دوشنبه 03 بهمن 1390, 18:23 عصر
برای تغییر دادن پسورد چه کدی نوشته شود

fakhravari
دوشنبه 03 بهمن 1390, 19:07 عصر
MembershipUser u;
protected void Page_Load(object sender, EventArgs e)
{
u = Membership.GetUser(User.Identity.Name);
}

protected void Button7_Click(object sender, EventArgs e)
{
try
{
u.ChangePassword(txtpOld.Text, txtPNew1.Text);
Label1.Visible = true;
Label1.Text = "Ok";
}
catch
{
Label1.Visible = true;
Label1.Text = "Error";
}
}

bitcob589
دوشنبه 03 بهمن 1390, 19:49 عصر
در overload متد CreateUser دو تامقدارstring password qution,string passwordAnswer می گرفت که آن دو مقدار مربوط هر کدام یک سوال و جواب بود چگونه می توان چند سوال در dropdownlist گذاشت اگر کاربر جواب سوال را درست پاسخ داد لاگین کاربر درست شود و تا زمانی که جواب را درست وارد نکرد لاگین درست نشود آیا چنین چیزی امکانپذیر است

bitcob589
سه شنبه 04 بهمن 1390, 21:38 عصر
دستورات پست 2 نوشته ام کاربر را ایجاد می کند و زمانی که کاربر ایجادشد باید کاربر به صورت خودکار لاگین کند لاگین انجام نمی گیرد و کاربر باید به صورت دستی یسورنیم و پسورد را وارد کند تا لاگین شود به چه دلیل کاربر بعد ساخت حساب کاربری خود به صورت خودکار لاگین نمی شود

bftarane
چهارشنبه 05 بهمن 1390, 12:41 عصر
چرا مي گين کاربر خودش بايد لوگين کنه در اون پست فقط کدها مربوط به ايجاد کاربر هست در مورد لوگين که کدي نوشته نشده.

bftarane
چهارشنبه 05 بهمن 1390, 13:50 عصر
فکر کنم کد زير کارتون رو راه بندازه

Response.Redirect("default.aspx");

bitcob589
چهارشنبه 05 بهمن 1390, 21:58 عصر
چرا مي گين کاربر خودش بايد لوگين کنه در اون پست فقط کدها مربوط به ايجاد کاربر هست در مورد لوگين که کدي نوشته نشده.
کد لاگین به چه صورتی نوشته می شود