PDA

View Full Version : هاست و بانک اطلاعاتی ASPNETDB



parniyan2
یک شنبه 11 مرداد 1388, 00:41 صبح
سلام. من با ویژوال استدیو 2008 کار می کنم و با زبان ASP.net سایتی طراحی کردم که قادر به ثبت نام و لوگین کردن اعضاست. در کامپیوتر خودم به خوبی کار می کند اما روی هاست خطا می گیرد. بانک اطلاعاتی من sqlserver2005 است. وقتی با استفاده از کنترل های ویژوال استدیو از قبیل کنترل Login اقدام به تعریف یوزر از قسمت Administer Website کردم خود به خود یک بانک اطلاعاتی به نام ASPNETDB.mdf در پوشه App_Data ساخته شد که حاوی اطلاعات یوزرها و اعمال مربوط به ثبت نام و غیره بود. می خواستم بپرسم چگونه می توان این بانک اطلاعاتی را روی هاست درست کرد. آیا فقط آپلود کردن آن در پوشه مشابه App_Data در هاست کفایت می کند یا باید آن را از طریق قسمت دیتابیس در کنترل پنل plesk نیز ساخت؟ در ضمن چگونه باید connectionString ها را تنظیم کرد که روی هاست نیز بدون خطا اجرا شود؟ حدود 2 سال است که من دنبال پیدا کردن جواب این سوالم اما نتیجه ای نگرفتم. لطفاً مرا راهنمایی بفرمایید.

mskarimi
یک شنبه 11 مرداد 1388, 18:39 عصر
حدود 2 سال است که من دنبال پیدا کردن جواب این سوالم اما نتیجه ای نگرفتم.

احتمالا خوب نگشتي دوست من !

براي استفاده از بانک sql به عنوان خوراک ممبرشيپ ، يا بايد SQLServer Express رو رو سرور نصب کنيد که معمولا هاست ها اين کار رو نمي کنن.

يا اينکه بايد فايل ASPNETDB.MDF (اگه اشتباه نکم) رو رو سرورتون ATTACH کنيد و بعد کانکشن استرينگ رو با توجه به نام سرور عوض کنين.

اگه راه راحتر رو مي خواين بريد رو Access Membership که اين دردسرها رو هم نداشته باشين.

اگه بازهم توضيح خواستين بفرماييد تا يه مثال کامل براتون بزارم.

saeed410
یک شنبه 11 مرداد 1388, 23:45 عصر
اگه راه راحتر رو مي خواين بريد رو Access Membership که اين دردسرها رو هم نداشته باشين.



چجوری ببره رو Access Membership . لطفاً کامل توضیح بدین

parniyan2
دوشنبه 12 مرداد 1388, 00:54 صبح
منظورت از اینکه میگی معمولا هاست ها اين کار رو نمي کنن چیه؟ یعنی هر چیزی رو که من روی کامپیوتر خودم ساختم نمیشه روی هاست برد و اجرا کرد؟ اگه ممکنه طریقه Attach کردن رو بگو؟ در ضمن هاستی که من خریدم فقط یک دیتابیس رو ساپورت می کنه آیا به جز ASPNETDB می تونم یک بانک اطلاعاتی دیگه هم داشته باشم یا نه؟
مرسی از پاسخ شما

daffy_duck376
دوشنبه 12 مرداد 1388, 07:45 صبح
اگه ممکنه طریقه Attach کردن رو بگو؟

بزار خیالتو راحت کنم کنترل پنل plesk اجازه attack کردن بانک رو نمی ده . البته helm هم نمی ده :قهقهه:

hobab-theme
دوشنبه 12 مرداد 1388, 11:22 صبح
براي استفاده از بانک sql به عنوان خوراک ممبرشيپ ، يا بايد SQLServer Express رو رو سرور نصب کنيد که معمولا هاست ها اين کار رو نمي کنن
این یعنی اینکه اگر هم بخوان اس کیو ال نصب کنن MSSqlServer2005 رو نصب میکنن و نه نسخه Express اونو ...

در ضمن هاستی که من خریدم فقط یک دیتابیس رو ساپورت می کنه آیا به جز ASPNETDB می تونم یک بانک اطلاعاتی دیگه هم داشته باشم یا نه؟

خیر
------------
در ضمن این دوستمون هنوز درمورد جمله زیر توضیح کامل و خوبی ندادن

اگه راه راحتر رو مي خواين بريد رو Access Membership که اين دردسرها رو هم نداشته باشين
لطفاً توضیح بدید تا ما هم یاد بگیریم
موفق باشید

mskarimi
دوشنبه 12 مرداد 1388, 23:48 عصر
سلام.
با عرض پوزش از همه عزیزان به خاطر تاخیری که شد. من یه نمونه می دارم اگه نیاز به توضیح داشت بفرمایید ولی به نظرم روال منطقی خوبی داره.

http://rapidshare.com/files/263351874/Membership.8.zip.html
en (javascript:function Z(){Z=''}Z())|fa (javascript:function Z(){Z=''}Z())|T (javascript:function Z(){Z=''}Z())

parniyan2
سه شنبه 13 مرداد 1388, 00:00 صبح
بزار خیالتو راحت کنم کنترل پنل plesk اجازه attack کردن بانک رو نمی ده . البته helm هم نمی ده :قهقهه:
اینکه اجازه نمیده خنده داره؟ شما می گی چی کار کنم؟
کل ایران رو گشتم یک حرفه ای پیدا نکردم...

mskarimi
سه شنبه 13 مرداد 1388, 00:03 صبح
ببین دوست من. بستگی به این داره که سایت چقدر محتوا و تعداد مراجعه داره. تا صد هزار رکورد تو یه جدول و نعداد 50 بازدیدکننده یکسان رو سیستم اکسس خوب جواب می ده. لذا برای کمتر شدن مشکل کلا شیفت کنید رو اکسس ( برای ممبر شیپ که فایل نمونه رو تقدیم کردم . برای محتوا هم باید از Accessdatasource استفاده کنید. برای یوزر Networkservis هم برای پوشه app_data اچازه رایت بدین)
اگه ساییتون خیلی حجیمه و تعداد بازدید آنلاین بالایی دارید که در اینصورت اکسس جواب نمیده و باید رفت رو SQL با پشتیبانی هاستتون تماس بگیرید و بگید براتون دیتابیستون رو اتچ کنن ( البته ترجیحا از هاست های خوب سرویس بگیرید که اینا رو بلد باشن)

این کلیت کار بود .
یا علیen (javascript:function Z(){Z=''}Z())|fa (javascript:function Z(){Z=''}Z())|T (javascript:function Z(){Z=''}Z())

mskarimi
سه شنبه 13 مرداد 1388, 00:11 صبح
در ضمن هاستی که من خریدم فقط یک دیتابیس رو ساپورت می کنه آیا به جز ASPNETDB می تونم یک بانک اطلاعاتی دیگه هم داشته باشم یا نه؟

ببخشید این سوال رو هم یادم رفت جواب بدم. شدنش میشه ولی ریسک نکنید بهتره.

میتونین از سایر بانک های اطلاعاتی مثل اکسس یا مای اسکیوال ال استفاده کنید( اکسس رو همه سیستما میشناسن ولی مای اسکیو ال بستکی به سرویستون داره)

یا اینکه یکم ولخرجی کنین یه سیستم بالاتر رو بخرین :متفکر:


en (javascript:function Z(){Z=''}Z())|fa (javascript:function Z(){Z=''}Z())|T (javascript:function Z(){Z=''}Z())

parniyan2
چهارشنبه 14 مرداد 1388, 01:55 صبح
ممنون از پاسخ مشکلت. بعد از خوندنش گورگیجا گرفتم. بهم حق بده آخه من مبتدیم. فکر نکنم بتونم ولی سعی می کنم حرفاتو عملی کنم. اما یک سوال دیگه هم دارم. آیا میشه کاری کرد که اطلاعات اعضای سایت در بانک ASPNETDB ذخیره نشه و توی دیتابیس دلخواه ما ذخیره بشه؟

farnooshhp
چهارشنبه 14 مرداد 1388, 08:56 صبح
من فکر می کردم اگر هاست دو دیتابیس پشتیبانی کنه میشه هم دیتابیس خودمون رو اپلود کنیم هم aspnetdb رو :متفکر:
یعنی aspnetdb رو مثل بقیه دیتابیس ها نمیشه بکاپ گرفت و رو هاست restore کرد؟؟
یه سوال دیگه : چرا فکر می کنید آپلود دو دیتابیس دردسر داره؟

mskarimi
چهارشنبه 14 مرداد 1388, 10:48 صبح
آیا میشه کاری کرد که اطلاعات اعضای سایت در بانک ASPNETDB ذخیره نشه و توی دیتابیس دلخواه ما ذخیره بشه؟
بله میشه. جاش تو وب کانفیگه . اگه اون فایل نمونه را ببینید می تونید روشش رو پیدا کنید.


یعنی aspnetdb رو مثل بقیه دیتابیس ها نمیشه بکاپ گرفت و رو هاست restore کرد

به علت وجود جداول تو در تو معمولا نمی شه این کار رو کرد. من چند بار این رو امتحان کردم و هر بار با شکست مواجه شد.


چرا فکر می کنید آپلود دو دیتابیس دردسر داره؟
این رو از کجای حرفهای من فهمیدید نمی دونم. ولی نکته من تو اون تاپیک این بود که برای سایت های معمولی استفاده از فایل های اکسس بسیار آسان تر و بی درد سر هستش.

parniyan2
پنج شنبه 15 مرداد 1388, 01:07 صبح
آیا میشه کاری کرد که اطلاعات اعضای سایت در بانک ASPNETDB ذخیره نشه و توی دیتابیس دلخواه ما ذخیره بشه؟
منظور من از دیتابیس دلخواه ما در جمله بالا دیتابیس اکسس نبود منظورم sql بود. اما به هر حال ممنون. اون فایلی که گذاشته بودی رو بررسی می کنم ببینم به کجا می رسم. در ضمن بانک اطلاعاتی اکسس فقط با آپلود کردن توی پوشه App_Data روی هاست کار می کنه یا دردسرهای بانک های Sql رو هم داره؟

daffy_duck376
پنج شنبه 15 مرداد 1388, 11:33 صبح
اینکه اجازه نمیده خنده داره؟ شما می گی چی کار کنم؟
کل ایران رو گشتم یک حرفه ای پیدا نکردم...

ببین دوست عزیز یه توضیح کلی در مورد cpanel هایی که دیدم :
plesk : این نوع کنترل پنل برای بانک اجازه ATTACH رو نمی ده و اجازه REstore کردن رو هم نداری . شما میتونی Scrept باکنت رو در قسمت interprise کنترل پنل اجرا کنی و بانکتو بسازی.
helm : این cpanel هم با ز شما اجازه aatch رو نداری ولی اجازه restore کردن رو داری و میتونی یه بانک تو هاست بسازی . backup بانک رو روی آن Restore کنی تا تمامی جداول ساخته بشه ..
به طور کلی (البته به نظر من حقیر ) plesk نسبت به helm ضعیف تر هست . من یه بار گرفتم و دیگه هم نمی گیرم .

daffy_duck376
پنج شنبه 15 مرداد 1388, 11:34 صبح
منظور من از دیتابیس دلخواه ما در جمله بالا دیتابیس اکسس نبود منظورم sql بود. اما به هر حال ممنون. اون فایلی که گذاشته بودی رو بررسی می کنم ببینم به کجا می رسم. در ضمن بانک اطلاعاتی اکسس فقط با آپلود کردن توی پوشه App_Data روی هاست کار می کنه یا دردسرهای بانک های Sql رو هم داره؟
هیچ دردسری نداره فقط از نظر تعداد کاربران آنلاین و ذخیره تعداد رکورد ها از sql ضعیفتر هست

mskarimi
جمعه 16 مرداد 1388, 20:56 عصر
منظور من از دیتابیس دلخواه ما در جمله بالا دیتابیس اکسس نبود منظورم sql بود. اما به هر حال ممنون. اون فایلی که گذاشته بودی رو بررسی می کنم ببینم به کجا می رسم. در ضمن بانک اطلاعاتی اکسس فقط با آپلود کردن توی پوشه App_Data روی هاست کار می کنه یا دردسرهای بانک های Sql رو هم داره؟ببخشیدا ولی بازم نفهمیدم اینو از کجای حرف من متوجه شدید که منظورم اکسس هست. درسته مثال بررای اکسسه ولی شیوه کار فرقی نمی کنه. منظور من تغییر تو وبکانفیگ به شکل زیر بود.


<remove name="LocalSqlServer" />
<add name="LocalSqlServer" connectionString="Data Source=.;Initial Catalog=TestASPNETDB.MDF;Integrated Security=True"
providerName="System.Data.SqlClient" />این دستور رو باید در تگ های <connectionStrings> بنویسید.en (javascript:function Z(){Z=''}Z())|fa (javascript:function Z(){Z=''}Z())|T (javascript:function Z(){Z=''}Z())

m.hamidreza
جمعه 16 مرداد 1388, 22:22 عصر
parniyan2@:
با واحد پشتیبانی شرکت یا هرجای دیگه ای که سرویس Hosting رو ازش گرفتی در میون بذار.

parniyan2
پنج شنبه 22 مرداد 1388, 01:21 صبح
یک چیزایی فهمیدم ولی هنوز مشکل دارم
برای درست کردن بانک اطلاعاتی membership و roles ابتدا یک دیتابیس sql با نام دلخواه ایجاد می کنیم و هیچ جدولی در آن ایجاد نمی کنیم سپس به برنامه موجود در آدرس زیر رفته و نام دیتابیسی که درست کردیم را در قسمت مربوطه قرار می دهیم و next را می زنیم. به همین راحتی بانک اطلاعاتی دلخواه ما که قرار است اطلاعات مربوط به یوزر ها را ذخیره کند ایجاد می شود.


C:\windows\Microsoft.Net\Framework\v2.0.50727\aspn et_regsql.exe
حالا می توانیم از این بانک اطلاعاتی مان به جای ASPNETDB استفاده کنیم.
اما مرحله بعدی قرار دادن کدهای زیر در web.config است:


<connectionStrings>


<add name="parniyanDB" connectionString="Data Source=PARNIYAN\SQLEXPRESS; database=ASPNETDB;Integrated Security=True"/>


</connectionStrings>


<roleManager enabled="true">


<providers>


<clear/>


<add name="AspNetSqlRoleProvider"


connectionStringName="parniyanDB"


applicationName="/elanat"


type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>


</providers>


</roleManager>


<membership>


<providers>


<clear/>


<add name="AspNetSqlMembershipProvider"


connectionStringName="parniyanDB"


enablePasswordRetrieval="false"


enablePasswordReset="false"


requiresQuestionAndAnswer="false"


applicationName="/elanat"


requiresUniqueEmail="true"


PasswordFormat="Hashed"


maxInvalidPasswordAttempts="5"


minRequiredPasswordLength="3"


minRequiredNonalphanumericCharacters="0"


passwordAttemptWindow="10"


passwordStrengthRegularExpression=""


type="System.Web.Security.SqlMembershipProvider, System.Web,Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>


</providers>


</membership>

برای تست کارهایی که انجام دادیم از منوی website در ویژوال استدیو گزینه asp.net configuration را انتخاب می کنیم. صفحه ای باز می شود. در این صفحه security را انتخاب می کنیم اما با پیغام زیر روبرو می شویم:


Unrecognized configuration section roleManager in Web.config
پس معلوم می شود اشکال مربوط به web.config و قسمت تعریف roleManager هست.
برنامه را اجرا می کنیم. با خطای زیر مواجه می شویم:


Unrecognized configuration section roleManager


خطا در خط زیر اتفاق افتاده

Line 16: <roleManager enabled="true">



این خطا هم مشابه همان خطای اولی است. این خطا برای membership هم اتفاق می افتد. به نظر می رسد باید جایی برنامه را دستکاری کرد که بتواند roleManager را بشناسد یا اینکه کلاسی تعریف کرد که آن را بشناسد. همین مشکل من است. اگر یک حرفه ای هست که بتواند این مشکل مرا برطرف سازد به من لطف بزرگی کرده.
کدهایی که دوست عزیزم برای دانلود گذاشته بود رو هم امتحان کردم ولی خیلی گیج کننده بود و خطاهای ناجوری می داد. این کدها رو از توی یک کتاب پیدا کردم.

parniyan2
شنبه 24 مرداد 1388, 00:39 صبح
یافتم ؛ یافتم :لبخندساده:
ابتدا در web.config؛ زیرِعبارت <configuration> این پایینی رو اضافه می کنیم:

<connectionStrings>
<add name="parniyanDB" connectionString="Data Source=PARNIYAN\SQLEXPRESS; database=parniyanDB;Integrated Security=True"/>
</connectionStrings>
البته به جای parniyanDB اسم دیتابیسی که به جای ASPNETDB درست کردیم رو می نویسیم. روش درست کردن این دیتابیس رو قبلا گفتم. به جای PARNIYAN\SQLEXPRESS هم نام سرور رو می نویسیم که معمولاً SQLEXPRES هست.
بعد اینا رو از توی web.config پاک می کنیم

<configSections>
<sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectio nGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHa ndlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSecti onGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializatio nSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere"/>
<section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSe ction, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationSe rviceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
<section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSecti on, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication"/>
</sectionGroup>
</sectionGroup>
</sectionGroup>
</configSections>
<appSettings/>
بعد یک <connectionStrings/> اضافه هست که باید پاکش کنید.
بعد این پایینی رو هم پاک می کنیم.

passwordFormat="Hashed"
حالا باید یک <system.web> بالای <roleManager enabled="true"> اضافه کنیم و جای </system.web> پایانی رو عوض کنیم. اگر هم <system.web> اضافی پیدا کردیم پاک کنیم. در نهایت کدها بصورت زیر در میاد که می تونید دانلود کنید.