PDA

View Full Version : انتقال اطلاعات داخل membership



vahid103
سه شنبه 31 مرداد 1391, 00:02 صبح
سلام
من برای لاگین کاربران از سیستم membership خود visual sudio استفاده کردم و حالا میخوام به سرور منتقل کنم یک بانک هم در sql دارم که دیتا هام در اون ذخیره میشه خوب بانکم تو sql که مشخصه باید attach کنم و connectionstring رو در webconfig اصلاح کنم ولی مشکل درمورد اطلاعات لاگین است که در داخل بانک aspnetdb در بانک خود visual studio تعریف شده اینو چطور باید منتقل کنم و connection اینو کجا باید اصلاح کنم هر کاری میکنم نمبیشه آیا روش خاصی داره
اگر فایل آموزش هست ممنون میشم

ey.joooon
سه شنبه 31 مرداد 1391, 00:18 صبح
سلام.
اگه درست منظورتون رو فهمیده باشم می خواهید اطلاعات کاربران را به جدولی که خودتون درست کردید انتقال بدید.
برای این کار اول cmd ویژوال استودیو را باز کنید و عبارت aspnet_regsql را تایپ کنید.
بعدش به صورت ویزاردی پایگاه داده خودتون را انتخاب کنید.
دقت کنید که باید تمامی connection string های web.config را عوض کنیدا.
به همین سادگی.
از الان هر کاربری که در سایتتون ثبت نام کنه اطلاعاتش توی دیتا بیسی می ره که شما انتخاب کردید.

vahid103
سه شنبه 31 مرداد 1391, 00:24 صبح
خیلی ممنون از پاسخ زیباتون که نشون دهنده تسلط شماست

نه سایت من اصلا ثبت نامی نداره کاربرا رو به صورت لوکال تو membership تعریف کردم و توی لوکال همه چی ردیفه ولی وقتی به سرور منتقل میکنم نمیدونم اطلاعات این کاربرارو کجا و چطوری باید منتقل کنم

ey.joooon
سه شنبه 31 مرداد 1391, 00:31 صبح
پایگاه داده ای که خود visual studio درست می کنه تو پوشه پروژتونه.
مگه اونو انتقال نمی دید.

vahid103
سه شنبه 31 مرداد 1391, 00:49 صبح
تشکر مجدد
بله انتقال میدم
من اومدم و حرف شما رو گوش دادم و در cmd با دستور aspnet_regsql اطلاعات رو به دیتابیسم منتقل کردم و همه جدول هارو هم ساهت ولی یوزر هایی که تعریف کردم وجود نداره و جدول یوزر رو خالی در دیتا بیسم اچاد و منتقل کرده

ey.joooon
سه شنبه 31 مرداد 1391, 00:54 صبح
شما چند تا یوزر توی جدول جدیدتون ایجاد و امتحان کنید.
حتما جواب می ده.

ey.joooon
سه شنبه 31 مرداد 1391, 00:55 صبح
شما چند تا یوزر توی جدول جدیدتون ایجاد و امتحان کنید.
حتما جواب می ده.

vahid103
سه شنبه 31 مرداد 1391, 01:00 صبح
الان چنتا یوزر رو تست میکنمفقط کانکشن رو چجوری باید اصلاح کنم یا نیازی به اصلاح نداره؟

vahid103
سه شنبه 31 مرداد 1391, 01:07 صبح
چنتا یوزر جدید ساختم ولی به بانک من منتقل نمیکنه و تو همون دیتا بیس ویژوال ایجادشون میکنه . در حالی که باید ببره تو بانکی که بهش معرفی کردم

ey.joooon
سه شنبه 31 مرداد 1391, 01:11 صبح
الان باید connection string name پایگاه داده جدیدتون را در web.config در قسمت های provider , membership و... قرار بدید.

ey.joooon
سه شنبه 31 مرداد 1391, 01:16 صبح
الان باید connection string name پایگاه داده جدیدتون را در web.config در قسمت های کانکشن استرینگ نیم provider , membership و... جایگرین کنید.

vahid103
سه شنبه 31 مرداد 1391, 01:18 صبح
ببخشید که اینقدر اذیتتون کردم
این webconfig منه کجاشو باید اصلاح کنم
91574
من یک کانکشن استرینگ دارم که برای دیتا بیس اصلیمه و membership رو هم به همین دیتا بیس منتقل کردم که کانکشن استرینگشو همون اول فایل میبینید

ey.joooon
سه شنبه 31 مرداد 1391, 01:30 صبح
ببین الان اسمه connetction string شما طبق این عکس lodconnetctionstring هست.
حالا تو فایل web. config بگرد و تگ membership , profile , role manager را پیدا کن.بین این تگ ها یک سری تگ به اسم add هست که بعضیهاشون خاصیتی به اسم connection string name دارن.
مقدار این خاصیت را به lodconnectionstring تغییر بده.

ey.joooon
سه شنبه 31 مرداد 1391, 01:31 صبح
ببین الان اسمه connetction string شما طبق این عکس lodconnetctionstring هست.
حالا تو فایل web. config بگرد و تگ membership , profile , role manager را پیدا کن.بین این تگ ها یک سری تگ به اسم add هست که بعضیهاشون خاصیتی به اسم connection string name دارن.
مقدار این خاصیت را به lodconnectionstring تغییر بده.

vahid103
سه شنبه 31 مرداد 1391, 01:40 صبح
این کلمات وجود نداشت من میتونم از دستور زیر خودم اونا رو تو web.config بسازم ؟

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="lodconnectionstring"
applicationName="MyApplication"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="true"
passwordFormat="Hashed" />
</providers>

</membership>

آیا درسته چیز دیگه ای نباید اضافه کنم؟

ey.joooon
سه شنبه 31 مرداد 1391, 01:45 صبح
نمیدونم.
ولی اینایی که من گفتم حتما تو web.config هست.

vahid103
سه شنبه 31 مرداد 1391, 01:52 صبح
واقعا از راهنمایی های عالیت ممنونم این عبارت نمیدونم چرا تو وب کانفیگ من نبود ولی با نوشتن دستور زیر تونستم درستش کنم که راهنمایی های شما واقعا موثر بود
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="lodConnectionString" />

</providers>
</membership>

vahid103
سه شنبه 31 مرداد 1391, 02:06 صبح
در مورد role manger نیز عبارت زیر مشکل را برای انتقال نقش ها به بانک دلخواه برطرف نمود
<roleManager enabled="true" defaultProvider="SqlRoleManager">
<providers>
<add connectionStringName="نام کانکشن استرینگ مورد نظر" name="SqlRoleManager"
type="System.Web.Security.SqlRoleProvider" />
</providers>
</roleManager>

vahid103
سه شنبه 31 مرداد 1391, 02:40 صبح
مشکلم تا حدود زیادی رفع شده الان ولی مشکلی که پیش اومده بعد از آپلود سایت با اینکه یوزر ها در بانک وجود دارد ولی وقتی وارد میکنم میگه مجددا سعی کنید و انگار یوزر ها رو نمیشناسه فکر کنم مشکل ازauthentication باشه اینو چه طور میشه رفع کرد؟

ey.joooon
سه شنبه 31 مرداد 1391, 02:46 صبح
شاید کدهای چک کردنت مشکل داره.اگه میتونی کدتا بذار.(می دونی که وقتی از memeber ship استفاده می کنی باید برای چک کردنه این که کاربری عضو هست یا نه باید یکم کد بزنی)
بعد من یه شوالی که ازت دازم اینه که این کدهای بالا چین؟از کجا اوردیشون؟

vahid103
سه شنبه 31 مرداد 1391, 10:36 صبح
سلام مجدد
کدهای بالارو از msdn پیدا کردم چون شما فرمودید هرجا membership و role manager بود کانکشن استرینگ رو درست کن درحالیکه من این کلمات رو تو وب کانفیگ نداشتم و برای همین از این کدا استفاده کردم تا یوزر ها و نقش ها به جدول دیتابیس خودم تو sqlمنتقل بشه . کد های چک کردن کدوم قسمت میشه مربوط به authorization و کدهای اون هست ؟

fakhravari
سه شنبه 31 مرداد 1391, 12:36 عصر
دوستان مشکل شما اتصال 2 دیتابیس به هم.
در کل اگر دیتابیس شما در APP_Data است و یک دیتابیس دیگر در رویSQL Server دارید برای اتصال انها به هم یک راهش


start / Microsoft Visual Studio 2010/ Visual Studio Tools / Visual Studio Command Prompt (2010)
aspnet_regsql.exe



است.
بعد از اتصال 2 دیتابیس به هم باید در قسمت وب کنفیگ هم رشته اتصال دیتابیس را به ممبرشیب بدهید برای مثال
بر روی سیستم Local تنظیمات زیر
<connectionStrings>
<add name="ConnectSring1" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\ASPNETDB.MDF;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
ConnectSring1 رشته ارتباطی
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
<providers>
<add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ConnectSring1" applicationName="/" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10"/>
</providers>
</membership>
<roleManager enabled="true"/>
<profile defaultProvider="customizedprofileprovider" enabled="true">
<providers>
<clear/>
<add name="customizedprofileprovider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ConnectionString1" applicationName="/" description=""/>
</providers>
<properties>
<add name="Name" type="String"/>
<add name="Family" type="String"/>
<add name="Address" type="String"/>
<add name="Image" type="String"/>
<add name="Sen" type="String"/>
<add name="Email" type="String"/>
<add name="YahooID" type="String"/>
</properties>
</profile>



بر روی Host تنظیمات زیر

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
<providers>
<add name="SqlProvider" type="System.Web.Security.SqlMembershipProvider"
connectionStringName="ConnectSring1" applicationName="/"/>
</providers>
</membership>

<roleManager enabled="true">
<providers>
<clear/>
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ConnectSring1" applicationName="/"/>
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider " applicationName="/"/>
</providers>
</roleManager>

vahid103
سه شنبه 31 مرداد 1391, 12:53 عصر
از جوابتون ممنون
فقط من اون مسیری رو که برای یکپارچه کردن دو دیتا بیس فرمودید رفتم و این فایل aspnet_regiis رو اجرا کردم ولی اتفاق خاصی نیفتاد کدهایی رو که در ادامه فرمودید من قبلا به صورت زیر قرار دادم آیا درست هستند
<configuration>
<connectionStrings>
<addname="lodConnectionString"connectionString="server=(local);uid=********;pwd=*********;database =lod"/>
</connectionStrings>

<system.web>
<membershipdefaultProvider="SqlProvider"userIsOnlineTimeWindow="15">
<providers>
<clear/>
<addname="SqlProvider"type="System.Web.Security.SqlMembershipProvider"connectionStringName="lodConnectionString"/>
</providers>
</membership>


<roleManagerenabled="true"defaultProvider="SqlRoleManager">
<providers>
<addconnectionStringName="lodConnectionString"name="SqlRoleManager"type="System.Web.Security.SqlRoleProvider"/>
</providers>
</roleManager>

وقتی میره تو هاست یوزر ها نمیتونن لاگین کنند فکر کنم هنوز از بانکی که بهش معرفی کردم نمیره یوزر ها رو احراز هویت کنه

vahid103
سه شنبه 31 مرداد 1391, 13:35 عصر
ضمنا طبق فرمایش شما من قبل از هر کاری در cmd رفتم و با دستور aspnet_regsql اطلاعات appdataرو به بانک خودم منتقل کردم و بعد دستورات فوق رو در کانفیگ نوشتم در لوکال مشکل ندارم ولی وقتی آپلو میکنم و کانکشن استرینگ رو اصلاح میکنم به بانک متصل هستم ولی یوزرها رو اهراز هویت نمیکنه و هی مجددا تلاش کنید میزنه به نظرتون مشکل در کجاست؟

fakhravari
سه شنبه 31 مرداد 1391, 13:48 عصر
بله
اشکال از خواندن نقش.
از دیتابیس یک bak بگیرید و ریستور کنید .
من این تغیرات در سایت خودم اعمال کردم.

<connectionStrings>
<add name="ConnectionString1" connectionString="workstation id=fakhravary.mssql.somee.com;packet size=4096;user id=fakhr;pwd=12sv789;data source=fakhravary.mssql.somee.com;persist security info=False;initial catalog=fakhravary" providerName="System.Data.SqlClient" />
</connectionStrings>
<membership defaultProvider="AspNetSqlMembershipProvider">
<providers>
<clear/>
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ConnectionString1"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
requiresUniqueEmail="true"
maxInvalidPasswordAttempts="6"
minRequiredPasswordLength="6"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
applicationName="/"/>
</providers>
</membership>
<profile defaultProvider="customizedprofileprovider" enabled="true">
<providers>
<clear/>
<add name="customizedprofileprovider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ConnectionString1" applicationName="/" description=""/>
</providers>
<properties>
<add name="Name" type="String"/>
<add name="Family" type="String"/>
<add name="Address" type="String"/>
<add name="Image" type="String"/>
<add name="Sen" type="String"/>
<add name="Email" type="String"/>
<add name="YahooID" type="String"/>
</properties>
</profile>
<roleManager enabled="true" defaultProvider="SqlRoleManager">
<providers>
<add name="SqlRoleManager" type="System.Web.Security.SqlRoleProvider" connectionStringName="ConnectionString1" applicationName="MyApplication"/>
</providers>
</roleManager>

http://www.fakhravary.somee.com
http://stackoverflow.com/questions/4454466/upload-aspnetdb-mdf-to-shared-hosting
http://www.studiocoast.com.au/knowledgebase/article-6-aspnet-using-sql-server-instead-of-aspnetdbmdf.aspx
http://aspnet.4guysfromrolla.com/articles/040506-1.aspx

vahid103
سه شنبه 31 مرداد 1391, 14:43 عصر
نشد . موندم چرا . باید بازم کدها رو چک کنم

vahid103
سه شنبه 31 مرداد 1391, 19:46 عصر
تونستم مشکل رو حل کنم ولی حالا یک مشکل دیگه دارم تو سرور که کاربرا عضو میشن پیش فرض یدون نقش هستن چطور میشه یه کاربر رو تو سرور به یک گروه خاص منتقل کرد
مشکل دیگ اینه که وقتی کاربر وارد شد حالا رو هر لینکی کلیک میکنه تو آدرس این گزینه میاد
mycustompage.htm?aspxerrorpath=/private/outpatient.aspx

یعنی مسیر رو پیدا نمیکنه ؟؟؟؟؟؟؟؟؟؟؟؟؟

vahid103
سه شنبه 31 مرداد 1391, 19:56 عصر
بذارید سوالمو اصلاح کنم من یک سری صفحاتم داخل پوشه های خاصه که وقتی کاربر لاگین میکنه برای صفحاتی که تو اون پوشست این خطا رو میده در حالی که برای صفحات دیگه که در پوشه وجود ندارند خطایی نمیده ضمنا هنوز هم مشکل اینو دارک که کاربرایی که عضو میشن رو پطوری نقش دهی کنم در سرور ؟
در لوکال هیچ مشکلی وجود نداره

fakhravari
چهارشنبه 01 شهریور 1391, 00:03 صبح
تونستم مشکل رو حل کنم ولی حالا یک مشکل دیگه دارم تو سرور که کاربرا عضو میشن پیش فرض یدون نقش هستن چطور میشه یه کاربر رو تو سرور به یک گروه خاص منتقل کرد
مشکل دیگ اینه که وقتی کاربر وارد شد حالا رو هر لینکی کلیک میکنه تو آدرس این گزینه میاد
mycustompage.htm?aspxerrorpath=/private/outpatient.aspx

یعنی مسیر رو پیدا نمیکنه ؟؟؟؟؟؟؟؟؟؟؟؟؟

با سلام
بهتره دیگه این پست ادامه ندی.
برای حل این مشکل باید در زمان ثبتنام یک رل به کاربر بدی به این شکل
protected void CreateUserWizard1_CreatedUser(object sender, EventArgs e)
{
Roles.AddUserToRole(CreateUserWizard1.UserName, "Users");
}
برای حل مشکل ادرس هایی که کلیک میکنی هم فکر کنم از تنظیمات authentication و یا کوکی باشه که توی وب کنفیگ داری