PDA

View Full Version : تعیینProvider از نوع siqel 2000 برای role های asp.net 2005



nazaninam
شنبه 23 اردیبهشت 1385, 18:31 عصر
من از asp.net 2005 استفاده میکنم ولی دیتابیسم 2000 هست وقتی یک role جدید میسازم یک object database از نوع 2005 در پروژه ایجاد میشه که role ها در اون قرار میگرند
چه چیزایی باید توی webconfig بنویسم که به provider role and membership من به بانک دلخواه sql server 2000 وصل شه... ممنون

nazaninam
شنبه 23 اردیبهشت 1385, 21:43 عصر
در ضمن بگم این مقاله توضیح داده چطور اینکار رو انجام میده ولی مشکل من این هست که نمی تونم نام connectionstring ام رو عوض کنم چون ازش در پروژم زیاد استفاده کردم..
http://weblogs.asp.net/scottgu/archive/2005/08/25/423703.aspx

manager
شنبه 23 اردیبهشت 1385, 23:10 عصر
برای استفاده از Roles باید مراحل زیر رو طی کنید :

1- با استفاده از ابزار خط فرمان ویژوال استادیو aspnet_regsql رو با پارامتر های زیر اجرا کنید :



aspnet_regsql -A all -E -d yourdatabasename -S yourservername


دستور فوق باعث نصب تمام الحاقات asp.net از جمله memberships و roles می شود (که مورد نیاز شماست)

بعد از اجرای دستور فوق به دیتابیستون مراجعه کنید می بینید که الحاقاتی به جداول,Viewها و StoredProccedureها اضافه شده است.

بسیار خوب
2- راحت ترین راه برای اینکه به asp.net بفهمونید که از دیتابیس شما استفاده کنه ویرایش LocalSqlServer است:


<configuration>
<connectionStrings>
<remove name="LocalSqlServer"/>
<add name="localSqlServer" connectionString="yourconnectionstring" provider="yourprovider"/>
</connectionStrings>
</configuration>


خوب حالا همه چی مهیاست که استفاده کنید.........

اما یه نکته : احتمالا بعد از یه مدتی به مشکل بر می خورید !!!!!! همون چیزی که من پوستم کنده شد تا رفعش کنم : بعد از یه مدتی هر کاری کنید نمی تونید یک User رو که ساختید به یه Role نسبت بدید !!!!!!!!!!

راه حل : باید به SPهای مربوط به ارتباط میان Users و Roles بروید (اسم ابتدائی این SPها با aspnet_UsersInRoles شروع می شه) و با اضافه کردن عبارت COLLATE Latin1_General_CI_AS به قسمت هائی که عمل مقایسه انجام می شه این مشکل رو رفع کنید.

این مشکل در اثر عدم تطابق زبان های دو فیلد ایجاد می شود.

nazaninam
یک شنبه 24 اردیبهشت 1385, 14:50 عصر
جناب manager ممنون ولی این رو تو مقاله بالا دقیقا همینجوری توضیح داده
گفتم من نمیخوام اسم connectionstring ام LocalSqlServer باشه!!
میشه راهنمایی کنید؟

manager
یک شنبه 24 اردیبهشت 1385, 23:44 عصر
<roleManager enabled="true">
<providers>
<remove name="AspNetSqlRoleProvider"/>
<add name="AspNetSqlRoleProvider"
connectionStringName="Northwind"
applicationName="/" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</roleManager>

اگر هم خواستید یه Provider دیگه ای داشته باشید (مثلا Provider ای که با فایل های XML کا کنه ) می تونید از کلاسهای BaseProvider و یا RoleProvider به ارث ببرید و آنها را Develop کنید.